動機
用for去merge list比用sum([...],[])
快,但好多行
Problem
Given two integers n
and k
, return all possible combinations of k
numbers out of the range [1, n]
.
You may return the answer in any order.
Example 1:
Input: n = 4, k = 2Output:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
Example 2:
Input: n = 1, k = 1Output: [[1]]
Constraints:
1 <= n <= 20
1 <= k <= n
Sol
class Solution:
def combine(self, n: int, k: int) -> List[List[int]]:
def dfs(ss,k,acc=[]):
if k == 0:
return [acc]
else:
return sum([dfs(ss[i+1:],k-1,acc+[n]) for (i,n) in enumerate(ss)], [])
return dfs(list(range(1,n+1)), k)