leetcode 15 三數之和python3

2021-09-28 16:46:44 字數 1218 閱讀 3213

給定乙個包含 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...