39. Combination Sum组合加和等于特定值Python

给定一组候选编号candidates(没有重复项)和特定值target,找到candidates 候选数总和为的所有唯一组合target。candidates里面的数可以重复。

Input:candidates=[2,3,4,7] target=7

Output:[[2,2,3],[2,2,4],[7]]

Clue:运用迭代方法

1. 定义一个函数,里面包括i,path两个变量分别表示在candidates的数字位置和存储目前位置进行加和操作的数字。如果>target则终止迭代;如果=target则将path中存储的数字添加到最后用来输出结果的res列表中然后终止迭代。

res=[]

def krystal(i,path):

    if sum(path)==target: res.append(path[:])   return

    if sum(path)>target: return

2. 用for循环将candidates的数添加到path中,然后迭代将当前循环的位置当做krystal中的i,新的有数的path当做krystal的path,判断sum(path)是否>=target;最后将迭代完成要将path中的末尾数pop出去,用来防止[1,2],[2,1]操作两次这种情况。

for

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值