難度 中等
給你乙個包含 n 個整數的陣列nums
,判斷nums
中是否存在三個元素 *a,b,c ,*使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
**注意:**答案中不可以包含重複的三元組。
示例:
給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[ [-1, 0, 1],
[-1, -1, 2]
]
方法:排序 + 雙指標
首先將陣列的元素從小到大排序,然後將每個位置的數字設為三元組中的第乙個元素 a ,並從該元素後面使用雙指標查詢其它兩個元素 b 和 c。雙指標 left 和 right 開始時為 left = i + 1 ,right = nums.length - 1
在查詢過程中注意去除掉重複元素
class
solution
arrays.
sort
(nums)
;for
(int i =
0; i < len; i++
)//去重
if(i >
0&& nums[i]
== nums[i -1]
)int left = i +1;
int right = len -1;
while
(left < right)
while
(left < right && nums[right]
== nums[right -1]
) left++
; right--;}
else
if(sum <0)
else
if(sum >0)
}}return ans;
}}
每日一題(三) 查詢
1.輸入乙個數n,然後輸入n個數,其值各不相同,再輸入乙個值x,輸出這個值在這個陣列中的下標誌 從0開始,若不在陣列中輸出 1 includeint main int x int ans 1 scanf d x for int i 0 i n i printf d n ans return 0 2....
寒假每日一題(三)
寒假每日一題之瘋狂補題 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左邊的兩個硬幣,則變為 oooo oooo 現在小明的問題是 如果已知了初始狀態和要達到的目標狀態,每次只能同時翻...
每日一題 1
題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...