/*給定乙個包含 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)
*/
1class
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...