class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> hash_table; //建立哈希表
vector<int> index;
for(int i = 0; i < nums.size(); ++i){
if (hash_table.count(nums.at(i))){ //如果存在
int n = hash_table.at(nums.at(i)); //将值对应的位置找到
index.push_back(n);
index.push_back(i);
break;
}
int f=target - nums.at(i);
hash_table.insert(make_pair(f, i)); //将 值的补 插入到哈希表中
}
return index;
}
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> hash_table; //建立哈希表
vector<int> index;
for(int i = 0; i < nums.size(); ++i){
if (hash_table.count(nums.at(i))){ //如果存在
int n = hash_table.at(nums.at(i)); //将值对应的位置找到
index.push_back(n);
index.push_back(i);
break;
}
int f=target - nums.at(i);
hash_table.insert(make_pair(f, i)); //将 值的补 插入到哈希表中
}
return index;
}
};
思路就是在表中找相同的值,找不到就把自己的补 插入到哈希表中,应该是时间复杂度最低的解法的。