給定乙個包含 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...