LeetCode:77.组合

   首先,我们知道这个题用到的是递归的加回溯的一个思想。我们就要意识到这道题最关键的地方就是它不停的在压栈 因为我们知道递归的本质就是相当于栈的存储结构,
   当我们在调用方法的时候,随着不停的循环,就相当于是不停的往里头压栈。当我第一个方法执行完之后,我进入第二个方法。在第二个方法完之后,就相当于回到了第一个方法的执行处,然后执行下面的方法。就是递归的一个思想,以及他的一个难点。
   随着你不停的递归,当你进入这个方法。再到之后这个方法结束了,就相当于回到上个方法的执行处再继续接着下面的方法执行。就会执行pop()方法

python解法:


import time

class Sloution:
    def combine(self,n,k):
        result=[]
        path=[]
        a=time.time()
        def backtracking(n,k,index):
            if (len(path) == k):
                result.append(path[:])
                return
            for i in range(index,n+1):
                path.append(i)
                backtracking(n,k,i+1)
                path.pop()

        backtracking(n,k,1)
        return result

c=Sloution()
print(c.combine(5, 2))


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

O(1)的boot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值