threesum

算法题

问题描述:
在一些给定的数中,找到三个数,他们相加的和是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

原文地址:https://www.cnblogs.com/whatyouknow123/p/6644874.html