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!
評論