給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。
你需要實現的函式twosum
需要返回這兩個數的下標, 並且第乙個下標小於第二個下標。注意這裡下標的範圍是 1 到 n,不是以0
開頭。
樣例給出 numbers =[2, 7, 11, 15]
, target =9
, 返回[1, 2]
.
方法一:使用map容器來儲存對應的元素和它的下標。
class solution ;//找到則返回
}valueindex.insert();//沒有找到,則把元素插入到map中
}return {};
}};
建立map,用於儲存陣列中的每個數和它的下標
迴圈:對每個元素numbers[i],計算其與target的差值value,在map中搜尋value,
如果找到了,則返回迭代器iter,
返回的迭代器iter與map的型別相同?包含兩位,第一位為數值,第二位為下標,下標從0開始還是1?
若沒找到,則將元素number[i]插入到map中
例:i=0,value=9-number[0]=9-2=7 (此時map為空)
在map中搜尋value=7失敗,將number[0]插入map中,map=[2,0,0......]
i=1,value=9-number[1]=9-7=2 (此時map=[2,0,0......])
在map中搜尋value=2,找到了
返回方法二:方法一中使用了多餘的空間來儲存元素和下標,但是在容器中我們可以直接進行查詢。
vectortwosum(vector&nums, int target) ;}}
return {};
}
1 兩數之和(容易)
在這裡插入 片題目描述 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums...
56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。注意事項 你可以假設只有一組答案。樣例給出 numbers 2,7,11,15 target 9,返回 0,1...
lintCode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 1 到 n,不是以 0 開頭。注意事項 你可以假設只有一組答案。樣例 給出 numbers 2,7,11,15 target ...