給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組
class
solution
(object):
defthreesum
(self, nums)
: nums.sort(
)# 排序
res =
for i in
range
(len
(nums)):
# 遍歷每乙個數
if i ==
0or nums[i]
> nums[i -1]
:# 確定不重複的數字(開頭)
l = i +
1 r =
len(nums)-1
while l < r:
# 左邊的位置 必須小於 右邊的位置
s = nums[i]
+ nums[l]
+ nums[r]
# 三個數的和
if s ==0:
[nums[i]
, nums[l]
, nums[r]])
# 再找下一組解
l +=
1 r -=
1# 左邊向右移動到不重複數為止
while l < r and nums[l]
== nums[l -1]
: l +=
1# 右邊向左邊移動不重複數為止
201409 1 相鄰數對
試題編號 201409 1 試題名稱 相鄰數對 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,表示值正好...
201409 1 相鄰數對
試題編號 201409 1 試題名稱 相鄰數對 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,表示值正好...
201409 1 相鄰數對
問題描述 給定n個不同的整數,問這些數中有多少對整數,它們的值正好相差1。輸入格式 輸入的第一行包含乙個整數n,表示給定整數的個數。第二行包含所給定的n個整數。輸出格式 輸出乙個整數,表示值正好相差1的數對的個數。樣例輸入 610 2 6 3 7 8 樣例輸出 3樣例說明 值正好相差1的數對包括 2...