給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。
輸入:nums = [2,7,11,15], target = 9輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
輸入:nums = [3,2,4], target = 6輸出:[1,2]
輸入:nums = [3,3], target = 6第一次解題我使用的是暴力解法,使用雙重迴圈即時間複雜度為o(n輸出:[0,1]
2)
o(n^2)
o(n2
) ,就不再詳細描述。一種相對快速的解題方法是使用雜湊表,可以使時間複雜度降為o(n
)o(n)
o(n)
。下面就來解釋一下這種方法。
for 下標 in 陣列的長度:
if 雜湊表含有target-陣列[下標]:
return
[target-陣列[下標]的value,下標]
為雜湊表放入新的對映關係
class
solution;}
map.
put(nums[i]
,i);
}return
newint
;}}
通過兩素之和這個題目我了解了關於雜湊表的特性以及相關操作方法。留下兩個問題給讀者思考:1.雜湊表中對應關係key值(元素)和value(下標),是否可以變為key值(下標)和value(元素)。2.為雜湊表新增新的對應關係是否可以放到if判斷語句之前,或者先對雜湊表進行初始化再進行if判斷。 leetcode 學習之路
給你兩個非空的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。輸入 l1 2,4,3 l2 5,6,4 輸出 7,0,8 解釋 342 ...
leetcode 自由之路
leetcode每日一題 這應該就是個廣度優先搜尋的實現,具體操作方法就是每次找到下一步的能到達的所有點,因為有重合,可以篩選一部分 我可能寫的比較亂,也可能有其他解決方法,但是我有點懶了 public intfindrotatesteps string ring,string key 開始遍歷ke...
LeetCode 菜鳥成長之路
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例...