leetcode 15 三數之和

2021-10-02 06:30:39 字數 744 閱讀 2232

排序 + 雙指標

本題的難點在於如何去除重複解。

演算法流程:

特判,對於陣列長度 n,如果陣列為 null或者陣列長度小於 3,返回空。

對陣列進行排序。

遍歷排序後陣列:

[1]若 nums[i]>0:因為已經排序好,所以後面不可能有三個數加和等於 0,直接返回結果。

[2]對於重複元素:跳過,避免出現重複解

[3]令左指標 l=i+1,右指標 r=n-1,當 l複雜度分析

時間複雜度:o(n*n)

空間複雜度:o(1).

vector> threesum(vector& nums) 

if (i > 0 && nums[i] == nums[i - 1])

left = i + 1;

right = len - 1;

while (left < right) );

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

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

left = left + 1;

right = right - 1;

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

return vec;

}

LeetCode 15 三數之和

15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...

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 solutio...

leetcode15 三數之和

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