中等 LeetCode15 三數之和

2021-10-06 12:44:39 字數 1119 閱讀 6312

題目

給你乙個包含 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...