兩數之和:
給定乙個整數陣列 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...