15 三數之和

2021-10-13 09:41:11 字數 718 閱讀 1436

用兩個迴圈,時間複雜度為n的平方

最關鍵的問題是去重

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

如果 nums[i]nums[i]大於 00,則三數之和必然無法等於 00,結束迴圈

如果 nums[i]nums[i] == nums[i-1]nums[i−1],則說明該數字重複,會導致結果重複,所以應該跳過

當 sumsum == 00 時,nums[l]nums[l] == nums[l+1]nums[l+1] 則會導致結果重複,應該跳過,l++l++

當 sumsum == 00 時,nums[r]nums[r] == nums[r-1]nums[r−1] 則會導致結果重複,應該跳過,r–r−−

下面展示一些內聯**片

class solution 

}i++;

while( nums[i] == nums[i-1]&&i<=length-3) i++;

}return ans;}}

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 分析排序 雙指標避免...