1. 程式人生 > >[Leetcode] Python3 實現三數之和

[Leetcode] Python3 實現三數之和

給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

 例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],滿足要求的三元組集合為:  [   [-1, 0, 1],   [-1, -1, 2]  ]

class Solution:

    def threeSum(self, nums):
     res_list = []
     if (type(nums) == list):
      findNums= [[]];
      nums.sort()
      k = len(nums)
      for i, v in enumerate(nums):
        j = i + 1
        while  j < k:
          m = j + 1
          while  m < k:
              if nums[i]+ nums[j]== -nums[m]:
                result = [nums[i], nums[j], nums[m]]
                result.sort()
                if result not in res_list:
                    res_list.append(result)
                m = m+ 1
              else:
                 m = m+ 1
          j = j+1
      return res_list
sss= Solution()
nums = [-1,-12,14,-6,4,-11,2,-7,13,-15,-1,11,-15,-15,13,-9,-11,-10,-7,-13,7,9,-13,-3,10,1,-5,12,11,-9,2,-4,-6,-7,5,5,-2,14,13,-12,14,-3,14,14,-11,5,12,-6,10,-9,-4,-6,-15,-9,-1,2,-1,9,-9,-5,-15,8,-2,-6,9,10,7,14,9,5,-13,9,-12,8,8,-8,-2,-2,1,-15,-4,5,-13,-4,3,1,5,-13,-13,11,-11,10,5,3,11,-9,-2,3,-10,-7,-6,14,9,-11,7,2,-4,13,7,5,13,-12,-13,7,-9,5,-7,11,-1,-12,8,3,13,-10,13,1,-4]
list = sss.threeSum(nums)
print(list)

上面演算法在本地驗證正確,但在提交服務端提醒超時,不知道是網路問題,還算效率