雙指標演算法題 三數之和

2022-05-16 06:31:41 字數 807 閱讀 2161

給你乙個包含 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,直接返回 。

對陣列進行排序(排序是必須的,否則無法判斷及指標移動)。

遍歷排序後陣列:

//go

func 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 題目分...