返回n个数中k的排列,用到了递归的方法。
class Solution(object):
def __init__(self):
self.l = []
def combine(self, n, k):
"""
:type n: int
:type k: int
:rtype: List[List[int]]
"""
out = []
if k > n:
return
self.com(n,k,0,out)
return self.l
def com(self,n,k,pos,out):
if len(out) == k:
self.l.append(out[:])
return
if n-pos+1<k-len(out):
return
for i in range(pos,n):
out.append(i+1)
self.com(n,k,i+1,out)
out.remove(i+1)
com函数里第二个if用来判断提前结束的条件。虽然通过了,运行时间较长,可以进一步优化。