从0开始学习python16:找出所有满足条件且不重复的三元组

leetcode中的一题:

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,
使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

看似简单的题,其实蕴藏了很多坑和知识。

def threeSum( nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        a = []
        for i in range(0,len(nums)):
            for j in range(1 + i ,len(nums)):
                for k in range(1 + j ,len(nums)):
                    if nums[i] + nums[j] + nums[k] == 0:
                        b = [nums[i],nums[j],nums[k]]
                        b.sort(reverse=False)
                        if b not in a:
                            a.append(b)
                        else:
                            pass       
                    else:
                        pass
        return a

总结:
1、用了3层循环 , 注意每个循环的起始数字都不一样
2、列表排序用sort,b.sort(reverse=False)为从小到大。
3、注意如果写:b = b.sort(reverse=False),返回的将是None。
应该直接写:b.sort(reverse=False)就会改变列表并保存。
4、列表添加元素为:a,append(b)将b添加入a中
5、列表[1,2,3][2,1,3]不相同
6、若要将两个列表等同,可以先将其排序,再进行判断
7、进行判断时,有个坑:必须先将b排序,再进行判断,不能将排序的程序写入判断语句中,不然将的到错误结果。
例:

#正确表达
b.sort(reverse=False)      #先排序,并且会改变b
if b not in a:             #后判断 
      a.append(b)                      
 
#错误表达
if b.sort(reverse=False) in a:	#不可以在判断中排序
	a.appand(b)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值