LeetCode 0015 三數之和

2021-09-29 07:54:06 字數 1054 閱讀 4413

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

**注意:**答案中不可以包含重複的三元組。

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[ [-1, 0, 1],

[-1, -1, 2]

]

排序 + 雙指標。

首先對原陣列進行排序;

選定乙個nums[i],再用兩個指標lr指向其後子陣列的兩端,計算三個數的和是否等於0:

如果nums[i] > 0,則三數之和必定不為0,結束迴圈;

如果nums[i] == nums[i-1],說明該數字重複,繼續操作會導致結果重複,應該跳過;

收縮lr,計算三數之和:

sum == 0時,若nums[l] == nums[l+1]會導致結果重複,跳過,l++

sum == 0時,若nums[r] == nums[r-1]會導致結果重複,跳過,r--

class

solution

else

if(sum <0)

else

if(sum >0)

}}return res;

}}

時間複雜度: o(n

2)

o(n^2)

o(n2);

空間複雜度: o(1

)o(1)

o(1)

。同上。

LeetCode0015 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 首先,對原陣列進行排...

學渣帶你刷Leetcode0015 三數之和

給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 乙個陣列,找到裡...

leetcode之15三數之和Golang

題目的要求有兩個,首先是三個數的和為0,其次是這種和為0的三元組不能重複。當給定乙個陣列,我們求滿足和為0的三元組的時候核心思想使用的是暴力破解,也就是三重迴圈,遍歷三次陣列,但是在這裡我們給出如下優化 首先將陣列按照從小到大的順序排序 設定三個指標index,分別為i,j,k,他們分別代表陣列中滿...