LeetCode-Python-77. 组合

给定两个整数 n 和 k,返回 1 ... 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2
输出:
[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],
]

第一种思路:

调库。

class Solution(object):def combine(self, n, k):""":type n: int:type k: int:rtype: List[List[int]]"""import itertoolsreturn list(itertools.combinations(range(1,n+1),k))

第二种思路:

回溯。一般问组合的都是回溯。

class Solution(object):def combine(self, n, k):""":type n: int:type k: int:rtype: List[List[int]]"""res = []def generate(k, i, tmp):if k == 0:res.append(tmp[:])returnfor j in range(i , n + 1):tmp.append(j)generate(k - 1, j + 1, tmp)tmp.pop()generate(k, 1, [])return res

以下写于2019.6.18 

class Solution(object):def combine(self, n, k):""":type n: int:type k: int:rtype: List[List[int]]"""res = []def dfs(t, cnt, tmp):if cnt == 0:res.append(tmp[:])for i in range(t + 1, n + 1):dfs(i, cnt - 1, tmp + [i])dfs(0, k, [])return res

 

本文链接:https://my.lmcjl.com/post/8277.html

展开阅读全文

4 评论

留下您的评论.