给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2
输出:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combinations
思路:注意该题要求是组合而非排序,创建n位数的列表nums,再从nums中取k个数,tmp_res控制当前第cul次取出的字符,当cul==k时保存到res中。
class Solution:
def getPermutation(self, n: int, k: int) -> str:
nums=[str(i) for i in range(1,n+1)]
res=[]
tmp_res=[]
self.select(nums,0,k,tmp_res,res)
return res
def select(self,nums:[str],cul:int,k:int,tmp_res:[str],res:[str])->str:
if(cul==k):
res.append(tmp_res)
return res
for i in range(0,len(nums)):
#f=f1+f2
self.select(nums[i+1:],cul+1,k,tmp_res+[int(nums[i])],res)
return res
if __name__=="__main__":
print(Solution().getPermutation(5,2))