中等
本題最關鍵的是如何去除重複解。
首先,如果陣列長度小於3,返回空
按從小到大順序排序陣列。
如果長度大於等於3
在遍歷陣列的過程中維護乙個left和right
left = i + 1, right = nums.length
如果num[i] > 0,也即是後面都是大於0的,返回結果。
其次,如果nums[i]與nums[i - 1]相等,也就是nums[i]這個值之前已經判斷過,continue。
如果發現了nums[i] + nums[left] + nums[right] == 0,將其加入結果中。並通過下面步驟去重。
如果nums[left] == nums[left + 1],結果重複,left += 1
right類似。
classsolution
for (int i = 0; i < nums.length; i++)
else
if (nums[i] + nums[left] + nums[right] > 0)
right -= 1;
else
left += 1;}}
return
res;
}}
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...