這道題兩個難點。第乙個是不能使用三層迴圈,因為會時間溢位,第二個也是主要的問題如何去重。一開始想要直接排序後去重,但是這樣的話會缺失解,比如這個解就得不到,所以不能直接去重。後來想到了可以判斷nums[i]與nums[i-1]是否相同,如果相同可以進行i++,這樣就可以去重了,但這只是死一次去重,要用不同的三個數,所以要去進行三次去重。【這個在後面解釋】。三層迴圈不能用就化簡為2層迴圈,使用類似左右指標的形式在確定第乙個數的情況下,遍歷剩下的陣列元素。
class solution );
++l,--r;
while (l < r && nums[l] == nums[l - 1]) ++l;//第二次去重
while (l < r && nums[r] == nums[r + 1]) --r;//第三次去重} }
}return result;
}};
nums【l】!=nums[l-1]右面的可以多次用,但是如果nums【l】==nums[l-1],還在繼續使用的話,就會產生重複。r同理。 力扣15 三數之和
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題解 這題wa了好多...
力扣 15 三數之和
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 排序 雙指...
力扣 15 三數之和 Golang
知識點 陣列 難度 中等 題目 給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 ...