每日刷題 四數之和

2021-10-01 01:53:28 字數 1031 閱讀 2486

給定乙個包含 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]].

二數之和、三數之和、四數之和均可以歸納為 k 數之和的類別。

對於這類問題,有:

方法一:列舉法,將所有 k 元組列舉出來,然後求和,挑選出滿足題意的元祖。其時間複雜度為 o(n^k).

當然,以上方法的執行時間並不理想。

方法二:雙指標法。

對於四數之和,我們首先進行兩重迴圈 k1 = 0,k2 = k1 + 1, 然後設定兩個指標 i = k2 + 1, j = nums.size() - 1.

令 sum = nums[k1] + nums[k2] + nums[i] + nums[j].

若 sum > target, 則 j–; 若 sum < target, 則 i++; 若 sum == target, 則滿足條件。

注意處理細節:不能出現重複的元組。

**:

class

solution

else

if( sum < target)

else

if( sum == target));

i++, j--

;while

( i < j && nums[i]

== nums[i-1]

&& nums[j]

== nums[j+1]

) i++

, j--;}

}}}return res;}}

;

每日刷題 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

每日刷題 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 方法一 列舉。將所有...

LeetCode刷題 18 四數之和

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