15 三數之和

2021-09-28 18:44:26 字數 643 閱讀 9424

雙指標法

時間複雜度o(n2)

首先對陣列進行排序,從左到右固定乙個數nums[i],再使用左右指標指向 nums[i]後面的兩端,數字分別為 nums[l]和 nums[r],計算三個數的和 sumsum 判斷是否滿足為 0,滿足則新增進結果集。

其中有下面幾種情況:

nums[i]>0,退出迴圈

nums[i]==nums[i-1],退出迴圈(乙個結果只進入結果集一次)

sum=0時nums[l] == nums[l+1] 則會導致結果重複,應該跳過,l++,右邊同理。

vector> threesum(vector& nums) );

left++;

while (left < right && nums[left] == nums[left -1]) left++;

right--;

while (left < right && nums[right] == nums[right +1]) right--;

}else if(nums[i]+nums[left]+nums[right]<0)

left++;

else

right--;}}

return ar;

}

15 三數之和

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

15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。有兩種寫法 第一種耗時久,但容易解讀 class solution if nums.length 3 else if ...

15 三數之和

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