題目
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例
解題思路及**
1. 思路
整體思路:將陣列進行排序後,從第乙個元素,開始遍歷整個陣列,並在當前元素右邊的陣列元素中找到符合條件的兩個元素。
雙指標+排序
將陣列進行排序後,對陣列中的元素進行遍歷。遍歷至nums[i],設定兩個指標l, r指向nums[i]後面陣列的兩端,
(1) 若三個數之和滿足sum = 0, 則新增至結果陣列,同時在l < r的情況下,l++,r–
(2) 若 sum = 0 滿足時,nums[l] = nums[l+1],會導致出現重複情況,跳過,l++
(3) 若 sum = 0 滿足時,nums[r] = nums[r-1],會導致出現重複情況,跳過,r–
(4) 若 nums[i] = nums[i-1],會導致出現重複情況,跳過,i++
(5) 若nums[i] > 0,則不可能再滿足sum = 0,結束遍歷
2. **
var threesum = function(nums)
nums = nums.sort((a, b) => a - b);
for (let i = 0; i < nums.length; i++)
/* if (nums[i] == nums[i+1]) */
if (i > 0 && nums[i] == nums[i - 1])
var l = i + 1;
var r = nums.length - 1;
while(l < r)
while (nums[r] == nums[r - 1] && l < r)
l++;
r--;
} else if (sum < 0) else if (sum > 0)}}
return res;
};
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 solu...
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 審題 查詢陣列中...
LeetCode 15 三數之和
15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...