LeetCode解題記錄(1) 兩數相加

2021-10-01 17:04:26 字數 1158 閱讀 7453

解題方案

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

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回[0, 1]

簡單的陣列題,根據題目描述我們可以明確以下幾個條件:

目標是求兩個下標值,不相等

兩個下標值對應元素之和等於target的值

陣列並非有序

本題有兩種方案

以時間換空間:暴力窮舉法

時間複雜度為o(n2),空間複雜度為o(1)

選定乙個元素作為第乙個元素,將後續所有元素與之加和,再和target比較,如果相等,則直接插入結果,返回結果

class

solution}}

return res;}}

;

這樣做,時間複雜度為n2,執行結果如下:

可以看到,整體執行時間很長,但是記憶體消耗很少

根據number1+number2 = target

可以得出這樣的結論:number2 = target - number1

因此考慮通過這樣的對應關係,去通過第乙個資料尋找第二個資料的下標

為了更加快捷的尋找,我們可以使用c++所提供的map容器完成這一對映

class

solution

//在這裡做插入的目的是減少一次迴圈,但是會導致結果反序

alph.

insert

(pair

(nums[i]

,i));}

return res;}}

;

這樣可以通過使用額外輔助空間將時間複雜度降到o(n),空間複雜度也是o(n)。

所有**都可以在我的github上找到:leetcode

LeetCode刷題記錄1 兩數之和

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

LeetCode刷題記錄 No 1 兩數之和

這個題如果用暴力演算法簡單的很哈 看一眼就知道咋寫了 但是有另一種hash演算法 時間複雜度優化,利用map的hash 題目 暴力解法沒什麼思路可言 雙層遍歷取值對比就是了 public int twosum int nums,int target return null 主要看map解法 思路 利...

LeetCode解題記錄(15) 三數之和

解題方案 給定乙個包含 n 個整數的陣列 num snums nums 判斷 num snums nums 中是否存在三個元素 a,b c,a,b,c a,b,c,使得 a b c 0 a b c 0 a b c 0找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。輸入 1,0,...