給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:[ [-1, 0, 1], [-1, -1, 2] ]
這道題是典型的雙指標應用,雙指標和此題的面試出鏡率都很高,建議掌握!
特殊判斷,對於陣列長度 n,如果陣列為 null 或者陣列長度小於 3,直接返回 。
對陣列進行排序(排序是必須的,否則無法判斷及指標移動)。
遍歷排序後陣列:
//gofunc threesum(nums int) int
sort.ints(nums) // 排序
for i := 0; i < length; i++
// 去重,下標 i 的數
if i > 0 && nums[i] == nums[i-1]
l := i + 1
r := length - 1
for
sum := nums[i] + nums[l] + nums[r]
if sum > 0
if sum < 0
if sum == 0
// 去重,下標 r
for l < r && nums[r] == nums[r-1]
l++r--
}} }
return result
}
三數之和(雙指標)
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 分析 題目要求 a ...
三數之和,排序 雙指標
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 先固定乙個數,...
leetcode三數之和 雙指標
題目描述 給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題目分...