歡迎關注我的刷題專欄 zhangyixing1007/leetcode
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。原題戳這裡注意:答案中不可以包含重複的三元組。
示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為: [ [-1, 0, 1], [-1, -1, 2] ]
劃重點:答案中不可以包含重複的三元組。
我們來理解一下這句話。
q1:nums=[-1,-1,2], ans=[[-1,-1,2]]是重複的三元組嘛?
a1:顯然不是,這裡只有一組三元組,雖然這組三元組中有兩個-1,但,這也不叫重複。
q2:nums=[-1,-1,-1,2], ans=?
a2:ans=[[-1,-1,2]],這裡ans中的-1無論是取的第0/1/2個都沒有關係。
q1告訴我們想要避免重複值,顯然不是不允許三元組中存在重複的元素。這意味著,我們不能簡單粗暴直接對陣列去重。
q2告訴我們無論相同的元素有多少個,它們的三元組表示都不能重複–看起來可以用set直接對三元組去重?
是的,但還可以更加簡單。
以下為**,我會詳細注釋,它是如何完成答案中不可以包含重複的三元組這個目標的。
class
solution
else
if(nums[i]
+nums[l]
+nums[r]
<0)
else}}
return list;
}}
然後我們可以做一道 在此基礎上的變式題: 最接近的三數之和。 三數之和(雙指標)
給定乙個包含 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 題目分...