leetcode三數之和及相似題型(c )

2021-09-22 08:22:00 字數 1578 閱讀 4472

最接近的三數之和

四數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[[-1, 0, 1],

[-1, -1, 2]

]

陣列問題大多課用雙指標法解決,這題也不例外。這型別題都是先排序後比較容易做。接著先固定乙個點,在用雙指標夾逼遍歷陣列來得出結果。只要注意過濾掉重複問題就可以了,即下乙個與上乙個相等時跳過。

class solution );//將三個數放進輸出結果中

while(l+1l&&nums[r]==nums[r-1])//r下乙個與當前相同跳過

--r;

++l;//找到後,l和r同時往裡走一步

--r;

}else if(sum<0)//因為陣列已經排好序,sum<0,移動l,sum增大

else//與小於0相反

--r;

}while(i+1給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

與上一題差不多的型別,只不過是換成了最相近的數,整體思路還是一致,知識多用了乙個變數來存放當前最接近的值。

class solution

}return sum;

}};

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。

注意:答案中不可以包含重複的四元組。

示例:給定陣列 nums = [1, 0, -1, 0, -2, 2],和 target = 0。

滿足要求的四元組集合為:

[[-1, 0, 0, 1],

[-2, -1, 1, 2],

[-2, 0, 0, 2]

]

也是同一類問題,只不過三數之和是乙個定點計算,四數之和用兩個定點計算,因此需要多用乙個迴圈來迭代,除此之外,其他操作也與三數之和大同小異。

class solution );

while(l+1l&&nums[r-1]==nums[r])

--r;

++l;

--r;

}else if(sum++l;

else

--r;

}while(j+1++j;

}while(i+1++i;

}return ans;

}};

leetcode 三數之和

給定乙個包含 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 題目分析 有序陣...

Leetcode 三數之和

解決方案一 class solution else if nums j nums k target else while i 1 1 i return lllist 解決方案2 class solution 如果有3個0,就直接作為乙個解 if zerosize 3 res.add arrays.a...