LeetCode第15題 三數之和

2022-09-02 12:09:08 字數 1206 閱讀 7606

/*

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

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

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

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

[[-1, 0, 1],

[-1, -1, 2]]*/

/*

思路: 首先想到的肯定是窮舉,時間複雜度為o(n^3) , 但如果使用這種方法,也實在稱不上演算法題了,果不其然,超時.

[-1, 0, 1, 2, -1, -4] 對於這個陣列,可以先固定乙個數,然後判斷其他2個數的和是否與這個數相反,如果

相反,自然就是乙個解.

****先排序****

首先固定乙個數,這個題中,從下標i=0開始,一直到length - 3.(因為固定的這個數右面起碼有2個位置留給另外2個數用於求和的.)

另外兩個數分別從 pos = i+1,和pos = length - 1 開始,向中間遍歷,求和sum,分析和.

1.如果sum與固定的數剛好相反,加入到解中。但也要考慮到去重的問題:如果這個數和接下來的數相同,就跳過

2.如果sum大於固定的數,就讓sum變小 , right++

3.如果sum小於固定的數,就讓sum變大 , left++

時間複雜度為o(n^2)

*/

1

class

solution15

8arrays.sort(nums);

9for (int i = 0; i < nums.length - 2; i++)

13if (nums[i] > 0)

16int left = i + 1;

17int right = nums.length - 1;

18while (left 25while (right > left && nums[right] == nums[right - 1])

28 ++left;

29 --right;

30 } else

if (sum + nums[i] < 0) else 35}

36}37return

res;38}

39 }

LeetCode筆記題15 三數之和

目錄 題目 1.暴力解法 t n o n3 s n o n 2.雙指標法 t n o n3 s n o n 3.給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示...

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 剪枝,left和ri...

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 思路 先對vecto...