题目链接:三数之和
利用和为0的性质,可以不用O(N^3)
而使用O(N^2)来解决
class Solution:
def isNotSame(self, lists, list): # 判断是否重复函数
for i in range(len(lists)):
if list == lists[i]:
return False
return True
def threeSum(self, nums):
lists = []
for i, num1 in enumerate(nums):
for j, num2 in enumerate(nums[i + 1:]):
num3 = (num1 + num2) * -1
if num3 in nums[i + j + 2:]: #注意这里是i + j + 2因为j是从0开始的
list = [num1, num2, num3]
list.sort()
if self.isNotSame(lists, list):
lists.append(list)
return lists
nums = [-1, 0, 1, 2,