一、題目描述
二、解題思路
這道題當然可以暴力,這樣時間複雜度爲。所以我採用哈希表來解決。
遍歷一次數組,將其與下標的插入到哈希表中。所以我們根據當前的數字去找是否在哈希表裏即可。但是如果出現的情況時,哈希表會根據查找到與當前的相同的下標,導致出錯,所以只有在作爲時映射出來的元素的下標與當前元素不等時,才證明找到。
三、解題代碼
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> ump; //val, index
vector<int> sln;
for(int i = 0; i < nums.size(); i++){
if(ump.find(nums.at(i)) == ump.end())
ump.insert(make_pair(nums.at(i), i));
if(ump.find(target - nums.at(i)) != ump.end()){
if(ump.find(target - nums.at(i))->second != i){
sln.push_back(ump.find(target - nums.at(i))->second);
sln.push_back(i);
return sln;
}
}
}
return sln;
}
};