給你乙個包含 n 個整數的陣列nums
,判斷nums
中是否存在三個元素 *a,b,c ,*使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
**注意:**答案中不可以包含重複的三元組。
示例:
給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
a + b = -c
暴力求解, 三重迴圈 0(n^3)
#
## [15] 三數之和
## @lc code=start
class
solution
(object):
defthreesum
(self, nums)
:"""
:type nums: list[int]
:rtype: list[list[int]]
"""res =
for i in
range
(len
(nums)-2
):for j in
range
(i +1,
len(nums)-1
):for k in
range
(j +1,
len(nums)):
if nums[i]
+ nums[j]
+ nums[k]==0
:[nums[i]
, nums[j]
, nums[k]])
return res
雜湊表記錄, a, b, a + b = c
左右下標往中間推進
#
## [15] 三數之和
## @lc code=start
class
solution
(object):
defthreesum
(self, nums)
:"""
:type nums: list[int]
:rtype: list[list[int]]
"""res =
nums.sort(
)for i in
range
(len
(nums)-2
):if i >
0and nums[i]
== nums[i -1]
:continue
l, r = i +1,
len(nums)-1
while l < r:
s = nums[i]
+ nums[l]
+ nums[r]
if s <0:
l +=
1elif s >0:
r -=
1else
:(nums[i]
, nums[l]
, nums[r]))
while l < r and nums[l]
== nums[l +1]
: l +=
1while l < r and nums[r]
== nums[r -1]
: r -=
1 l +=
1 r -=
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...