給定乙個包含 n 個整數的陣列nums
,判斷nums
中是否存在三個元素 *a,b,c ,*使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
**注意:**答案中不可以包含重複的三元組。
例如, 給定陣列 nums =[-
1,0,
1,2,
-1,-
4],滿足要求的三元組集合為:[[
-1,0
,1],
[-1,
-1,2
]]
related topics:陣列 雙指標
/**
* 方案一:暴力法,直接三層迴圈
* 結果會出現重複資料
*/class
solution}}
}return res;
}}
/**
* 方案二:
* 首先對該陣列進行排序,然後進行判斷:
* 當陣列長度小於3,直接return;
* 當nums[i] > 0,則三數之和一定大於0,因為一開始已經排序了,直接break;
* */
class
solution
arrays.
sort
(nums)
;//排序
for(
int i =
0; i < len; i++)if
(i >
0&& nums[i]
== nums[i -1]
)int l = i +1;
int r = len -1;
while
(l < r)
while
(l < r && nums[r]
== nums[r-1]
)
l++;
r--;}
else
if(sum <0)
else
if(sum >0)
}}return ans;
}}
/**
* 也是用到了雙向指標
*/class
solution
while
(l < r && nums[r]
== nums[r-1]
)
l++;
r--;}
else
if(nums[l]
+ nums[r]
< sum)
else}}
}return ans;
}}
(P15)守護程序
include include include include include include include include include define err exit m do while 0 呼叫者程序將稱為新會話期的領頭程序 呼叫者程序成為新會話期中唯一的乙個程序組的組長 新的會話期沒有...
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 三數之和
給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。有兩種寫法 第一種耗時久,但容易解讀 class solution if nums.length 3 else if ...