給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums =[2
,7,11
,15], target =
9因為 nums[0]
+ nums[1]
=2+7
=9所以返回 [0,
1]
分析:暴力法兩層迴圈,時間複雜度是n2n^
n2,所以不考慮。
一開始的思路是用map來存放陣列的元素(key)和對應位置(values),但map容器不能存放相同的key,對陣列中有相同元素的情況只能加入最先出現的那個,所以用multimap代替map,它與map的區別是可以存放相同的key。map/multimap中的元素都是按key有序存放的,所以在multimap中相同的key一定會相鄰。
注:這是為了解決tar
get=
2xtarget=2
target
=2x,且在陣列中有兩個x
xx的情況。
用find函式來定位資料出現位置,它返回乙個迭代器,當資料出現時,它返回資料所在位置的迭代器。如果map/multimap中沒有要查詢的資料,它返回的迭代器等於end函式返回的迭代器。
演算法練習之leetcode兩數相加(1)
題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 ...
演算法練習之兩數之和
上周五 1.4號 看到群裡有再說力扣 的演算法題,自己就去搜尋了下,發現是練習演算法 資料庫 shell的平台,很不錯。周五下午在測試的間隙,自己做了一道簡單的演算法題,剛好把這兩天覆習的python的基礎知識複習了。演算法題目 總結思路及知識點1.題目要求 給定任意一列表 列表內容為數字 再給定乙...
演算法練習 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...