給定乙個包含 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)
:'''
思路: a,b,c三個數除了[0,0,0]這種組合,其中一定需要有負數。所以有以下過程:
1.排序
2.迴圈list遍歷a,如果a>0 終止迴圈
3.a的右面是乙個新的list,在新的list種b在左端c在右端,如果abc之和》0 c向左移動,如果abc之和小於0b向右移動
'''nums =
sorted
(nums)
print
(nums)
res =
for i in
range
(len
(nums)-2
):if i>
0and nums[i]
==nums[i-1]
:continue
if nums[i]
>0:
break
left,right = i+1,
len(nums)-1
while lefta = nums[i]
b = nums[left]
c = nums[right]
sums = a+b+c
if sums>
0:right-=
1elif sums<
0:left+=
1else
:[a,b,c]
) left+=
1 right-=
1while nums[left]
==nums[left-1]
and left1while nums[right]
== nums[right+1]
and left < right: right -=
1return res
LeetCode 15 三數之和
15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...
leetcode 15 三數之和
給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solutio...
leetcode15 三數之和
給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 先找兩數之和,然後再用un...