給定乙個包含 n 個整數的陣列nums
,判斷nums
中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
思路:利用滑動視窗思想,先將陣列排好序,然後選定乙個數作為 target,這樣就將問題轉換為求兩個數的和等於這個 target 的問題,然後從 target 的位置出發,用 i 和 j 指標規劃乙個 [ i , j ] 的 視窗,其中 i 是大於 target 的位置的,而 j 是小於陣列長度的位置的, 如果 nums[i] + nums[j] 的值和 target 相等,那麼加入 res,如果小於 target,則 i++,如果大於 target,則 j--。其中還要考慮到去重的問題。
**:
class solution
//****一定要有i < j條件,否則j會取-1
while(i//***
i++;
j--;
}else if(value < (-nums[k]))
i++;
else
j--;
}//****重值處理
while(k < nums.length-1 && nums[k] == nums[k+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...