77. Combinations
題目網址:https://leetcode.cn/problems/combinations/
題意:給兩個整數
n
和k
, 以任意順序返回[1, n]
中所有可能的k
個數組合。
Solution:
想法:取每個
i
輪流當開頭, 其中i
的範圍是[1, n]
, 並從[i + 1, n]
取k - 1
個(從i + 1
取必不會重複到前面)。dfs()
中的 for loop 是取j + 1
, 因為若取i + 1
, 則當j > i + 1
後, 便會取到重複的組合。
e.g.n = 3, k = 2
, 其中[1, 2]
,[2, 1]
不能同時出現
class Solution { |
- time:$O(k \cdot \binom{n}{k})$ ➔ $\binom{n}{k}$ 種組合, 每種組合需 $O(k)$ time
- space:$O(k \cdot \binom{n}{k})$ ➔ $O(k) + O(k \cdot \binom{n}{k}) + O(k)$
- $O(k)$:
dfs()
最大遞迴深度 - $O(k \cdot \binom{n}{k})$:$\binom{n}{k}$ 種組合, 每種組合長度為
k
- $O(k)$:
cur
最大長度
- $O(k)$:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論