雙指標法
時間複雜度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 分析排序 雙指標避免...