地址: 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