數字之和問題

2022-06-05 22:51:15 字數 2348 閱讀 3215

1. 兩數之和

給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

你可以按任意順序返回答案。

示例 1:

輸入:nums = [2,7,11,15], target = 9

輸出:[0,1]

解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

輸入:nums = [3,2,4], target = 6

輸出:[1,2]

示例 3:

輸入:nums = [3,3], target = 6

輸出:[0,1]

解題思路: 使用hashmap的key儲存目標的差,並記錄它的位置。等遍歷到目標差時就找到匹配的值。

class solution 

nummap.put(target - nums[i], i);

}return result;}}

2. 三數之和

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

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

解題思路:注意點,不可以出現重複三元組。 先排序,在進行遍歷。有重複的值跳過。

class solution 

arrays.sort(nums);

for(int first = 0; first < len; first++) 

int third = len - 1;

int target = -nums[first];

for(int second = first + 1; second < len; second++) 

while(second < third && (nums[second] + nums[third]) >  target) 

if(second == third) 

if(nums[second] + nums[third] == target) }}

return result;}}

3. 四數之和

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

int len = nums.length;

arrays.sort(nums);

for(int first = 0; first < len - 3; first++) 

if(nums[first] + nums[first + 1] +  nums[first + 2] + nums[first + 3] > target) 

if(nums[first] + nums[len - 1] + nums[len - 2] + nums[len -3] < target) 

for(int second = first + 1; second < len - 2; second++) 

if(nums[first] + nums[second] + nums[second + 1] + nums[second + 2] > target) 

if(nums[first] + nums[second] + nums[len - 1] + nums[len -2] < target) 

int left = second + 1, right = len - 1;

while(left < right)  else if (sum > target)  else 

right--;

while(left < right && nums[left] == nums[left + 1]) 

left++;}}

}           

}return result;}}

201512 1 數字之和

試題編號 201512 1 試題名稱 數字之和 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定乙個十進位制整數n,輸出n的各位數字之和。輸入格式 輸入乙個整數n。輸出格式 輸出乙個整數,表示答案。樣例輸入 樣例輸出 樣例說明 20151220的各位數字之和為2 0 1 5 ...

1106 數字之和

題目描述 對於給定的正整數 n,計算其十進位制形式下所有位置數字之和,並計算其平方的各位數字之和。輸入 每行輸入資料報括乙個正整數n 0 輸出 對於每個輸入資料,計算其各位數字之和,以及其平方值的數字之和,輸出在一行中,之間用乙個空格分隔,但行末不要有空格。樣例輸入 4 1297 39999 0 樣...

18 數字之和

18 數字之和 問題描述 輸入乙個正整數,求這個正整數的各位數字之和。輸入說明 你的程式需要從標準輸入裝置 通常為鍵盤 中讀入多組測試資料。每組測試資料為正整數,每行乙個n,n小於20000。輸出說明 對每組測試資料,你的程式需要向標準輸出檔案 通常為啟動該程式的文字終端 依次輸出一組對應的答案 輸...