算法题
问题描述:
在一些给定的数中,找到三个数,他们相加的和是0,并且这三个数的组合是不能重复的
例子:
input
[-1, 0, -1, 2, 1]
Output
[[-1, 1 ,0], [-1, -1, 2]]
解法:
Python代码:
Class threesum(object):
def sumthree(self, nums):
nums.sort() #先对nums数组进行排序,这里的nums是一个list变量
Numlist = []
for i in range(len(nums) -2):
if i !=0 and nums[i] == nums[i-1]:
Continue
J,k = i+1, len(nums)-1
While j <k:
S = nums[i] +nums[j] + nums[k]
If s>0 or (k < len(nums) -1 and nums[k ] == nums[k+1])
K -= 1
Elif s<0 or (k>i +1 and nums[j] == nums[j -1])
J -= 1
Else:
Numliist.append([nums[i], nums[j], nums[k]])
J += 1
K += 1
Return numlist