我的解决(暴力遍历):
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
int k = nums.size();
for (int i = 0; i < k ; ++i) {
//if (nums.at(i)>target) continue;
for (int j = i+1; j < k; ++j) {
if (nums.at(i)+nums.at(j)==target) {
res.push_back(i);
res.push_back(j);
return res;
}
}
}
}
};
总结:这个方法没什么技术含量,时间复杂度比较差
参考了LeetCode上的参考解答,使用一趟的哈希表,可以得到时间复杂度更好的结果:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
map<int,int> mymap;
int k = nums.size();
for (int i = 0; i < k ; ++i) {
int complement = target - nums[i];
if (mymap.find(complement)!=mymap.end()&&mymap.at(complement)!=i) {
res.push_back(i);
res.push_back(mymap[complement]);
return res;
}
mymap[nums[i]] = i;
}
}
};