暴力解法:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int length = nums.size();
for(int i = 0; i < length - 1; i++) {
for(int j = i + 1; j < length; j++) {
if(nums[i] + nums[j] == target) {
return {i,j};
}
}
}
return {};
};
};
一遍hash表:在插入hash表前就检查已经存入的是否符合条件,如果是则得到结果。否则插入hash表中。因为是在检查完成后才插入,所以可以避免自身的重复。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> a;
vector<int> b(2, -1);
for(int i = 0; i < nums.size(); i++) {
if(a.count(target - nums[i]) > 0) {
b[0] = i;
b[1] = a[target - nums[i]];
break;
}
a[nums[i]] = i;
}
return b;
}
};