【視頻講解】LeetCode 第 1 號問題:兩數(shù)之和

題目來源于 LeetCode 上第 1 號問題:兩數(shù)之和。題目難度為 Easy,目前通過率為 45.8% 。
題目描述
給定一個整數(shù)數(shù)組?nums
?和一個目標值?target
,請你在該數(shù)組中找出和為目標值的那?兩個?整數(shù),并返回他們的數(shù)組下標。
你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,你不能重復(fù)利用這個數(shù)組中同樣的元素。
示例:
給定?nums?=?[2,?7,?11,?15],?target?=?9
因為?nums[0]?+?nums[1]?=?2?+?7?=?9
所以返回?[0,?1]
題目解析
使用查找表來解決該問題。
設(shè)置一個 map 容器 map 用來記錄元素的值與索引,然后遍歷數(shù)組 nums。
每次遍歷時使用臨時變量 temp 用來保存目標值與當(dāng)前值的差值
在此次遍歷中查找?map?,查看是否有與?temp?一致的值,如果查找成功則返回查找值的索引值與當(dāng)前變量的值 i
如果未找到,則在?map?保存該元素與索引值 i
視頻講解

代碼實現(xiàn)
class?Solution?{
????public?int[]?twoSum(int[]?nums,?int?target)?{
??????Map?<Integer?,Integer>?map?=?new?HashMap<>();
??????for?(int?i?=?0?;?i?<?nums.length?;?i++){
??????????int?temp?=?target?-?nums[i];
??????????if?(map.containsKey(temp)){
??????????????return?new?int?[]{map.get(temp),i};
??????????}
??????????map.put(nums[i],i);
??????}
???????return?new?int[]?{-1,-1};
????}
}
補充
這是小吳第一次嘗試著使用視頻的形式進行講解,所以先拿以前的題目練習(xí)一下錄制,但沒想到只是短短的 5 分鐘視頻竟然花費了六七個小時。。。