給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。示例1
給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
def
threesum
(nums)
:"""
思路:固定乙個數,使這個數其後的兩個數和為0,
"""nums.sort(
) n =
len(nums)
res =
i =0for i in
range
(n):
if i ==
0or nums[i]
>nums[i-1]
:# 第一輪為0,第二輪開始固定的數不能重複
left = i+
1 right = n-
1while left < right:
three_sum = nums[i]
+ nums[left]
+nums[right]
if three_sum ==0:
[nums[i]
, nums[left]
, nums[right]])
left +=
1 right -=
1while left < right and nums[left]
== nums[left-1]
:# 左邊重複則右移
left +=
1while right > left and nums[right]
== nums[right+1]
:# 右邊重複則左移
right -=
1elif three_sum >0:
# 三數和大於0,則右邊左移
right -=
1else
:# 三數和小於0,則左邊右移
left +=
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...