15 三數之和 leetcode

2022-07-01 01:06:14 字數 1007 閱讀 9323

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

我一拿到這題,就想著暴力破解,三重迴圈,i答案思路:雙指標法,用雙重迴圈,其中一層迴圈雙指標,乙個迴圈兩個變數,時間複雜度就減少了。

第一層固定元素k,第二層迴圈指標 i,j 

k收穫:

1.本題學到了雙指標法,乙個指向頭,乙個指向尾,a情況頭指標++,b情況尾指標--,c情況 頭指標++ 尾指標--;

2.學會了遍歷list時候 去重的程式寫法,看起來很舒服。

i += 1

while i < j and nums[i] == nums[i-1]: i += 1

注: 是 i == i-1 不是 i == i+1 : 因為是判斷現在與過去,不是現在與將來。

class solution:

def threesum(self, nums: list[int]) -> list[list[int]]:

if len(nums) 

return none

nums.sort()

res = 

k = 0

while k 

if nums[k] > 0 :

break

i,j = k+1,len(nums) - 1

while i 

curval = nums[k] + nums[i] + nums[j]

if curval == 0:

i = i + 1

j -= 1

while iwhile ielif curval 

i += 1

while ielif curval > 0:

j -= 1

while i k+=1

while kreturn 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...