求一数组中元素相加为0的三元组

nums = [0, -1, 2, -3, 1]
nums = sorted(nums)
res = []
for i in range(len(nums)):
    low = i+1
    high = len(nums)-1
    a = nums[i]

    while low<high:
         b = nums[low]
         c = nums[high]
         if (a+b+c) == 0:
             res.append([a,b,c])
             while high>0 and (nums[high] == nums[high-1]):
                 high -=1
             high-=1
             while low<len(nums)-1 and nums[low] == nums[low+1]:
                 low +=1
             low+=1
         elif (a+b+c) > 0:
             while high>0 and (nums[high] == nums[high-1]):
                 high -=1
             high-=1
         elif (a+b+c) < 0:
             while low<len(nums)-1 and nums[low] == nums[low+1]:
                 low +=1
             low+=1
print res

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值