leetcode 15 三數之和

2022-03-13 20:45:32 字數 1005 閱讀 7912

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[[-1, 0, 1],

[-1, -1, 2]

]解題思路:

三個數之和,要麼是依次遍歷陣列三個數相加看是否等於0,但是這種方法演算法複雜度等於0(n^3),有點複雜。

還有一種思路是先對陣列進行一次排序,然後找乙個固定值,nums[i],然後設定兩個指標,left=i+1,right = nums.length -1,兩個指標一起迴圈,如果三個數的和等於0那就存放,如果大於0,就讓尾指標 right 向前走,如果小於0,就讓頭指標 left 向前走。(這塊建議自己在紙上畫一畫,先對陣列排序,然後固定乙個值,從設定頭尾指標進行遍歷)

var threesum =function(nums) )

//判斷陣列內的元素是否都大於0,或者都小於0,就直接返回

if(nums[0] > 0 || nums[nums.length-1]<0) return

result

//開始遍歷

for (let i =0; i < nums.length; i++)

移動後的指標和移動前的指標元素相等,再往後移動

while(left < right && nums[left] === nums[left + 1

]) }

//2.小於0的情況

else

if(fixedvalue + nums[left] + nums[right] < 0

)

//大於0的情況

else}}

return

result

}

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...