哈希表:unordered_map <int,int> hashmap; 定义两个值,一个是下标一个放值
这个题要返回目标值的下标
#include <vector>
#include <bits/stdc++.h>
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
unordered_map <int,int> hashmap;
int n = numbers.size();
vector<int > res;
for(int i = 0; i < n ; ++i)
{
if(hashmap.find(target-numbers[i]) != hashmap.end()){
res.push_back(hashmap[target-numbers[i]] + 1);
res.push_back(i+1);
}else{
hashmap[numbers[i]] = i;
}
}
sort(res.begin(),res.end());
return res;
}
};
时间复杂度为O(N);该方法需要构建哈希表,因此空间复杂度为O(N)