排序 + 雙指標
本題的難點在於如何去除重複解。
演算法流程:
特判,對於陣列長度 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...