【leetcode每日一题】【2019-05-22】15. 三数之和

    xiaoxiao2022-07-04  135

    15. 三数之和

    地址: https://leetcode-cn.com/problems/3sum/solution/

    题目:

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

    最简单的办法就是列出所有的组合,然后一一验证。 看了下解题思路, 2sum 和 3sum 的思路还有蛮有意思的,写了下代码,但是还是超时,无法通过。

    Python3代码:

    class Solution: def threeSum(self, nums): nums_new=sorted(nums) result=[] for i in range(1,len(nums_new)-1): flag=0 for k in range(0,i): if nums_new[k]>0 or (0 - nums_new[i] - nums_new[k])<0 : flag=1 break if (0 - nums_new[i] - nums_new[k]) in nums_new[i+1:]: result.append("%s,%s,%s"%(nums_new[k],nums_new[i], (0 - nums_new[i] - nums_new[k]))) result_new=[] for i in list(set(result)): tmp=[] for j in i.split(","): tmp.append(int(j)) result_new.append(tmp) return result_new
    最新回复(0)