leetCode刷題 兩數之和

2021-09-26 09:12:53 字數 1176 閱讀 4711

兩數之和:

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

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

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

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

所以返回 [0, 1]

**leetcode

我的解法:

class

solution;}

}}return null;

}}

時間複雜度:o(n^2),

對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o(n)o(n) 的時間。因此時間複雜度為 o(n^2)。

空間複雜度:o(1)。

官方解法:

兩遍雜湊表

class

solution

for(

int i =

0; i < nums.length; i++);

}}throw

newillegalargumentexception

("no two sum solution");

}}

解法思路,在第一次迭代中,我們將每個元素的值和它的索引新增到表中。然後,在第二次迭代中,我們將檢查每個元素所對應的目標元素(target−nums[i])是否存在於表中。注意,該目標元素不能是 nums[i] 本身!

時間複雜度:o(n)

空間複雜度:o(n)

一遍雜湊表

class

solution;}

map.

put(nums[i]

, i);}

throw

newillegalargumentexception

("no two sum solution");

}}

解題思路:

在將元素num放入到map中的同時,判斷map中是否有對應的target-num的元素,有的話,直接返回。否則將num及其下標放入到map中

時間複雜度:o(n)

空間複雜度:o(n)

leetCode刷題 兩數之和

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

LeetCode刷題 兩數之和

給定乙個整數陣列nums和乙個整數目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。示例 1 輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋...

leetcode刷題 兩數之和

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。開始思路 只是做出來,但是沒有考慮只對應乙個答案,兩個for迴圈不容易解決重複問題,1 a 2,4...