两数之和
题目
我的解题思路
方法一
如果两个数相加在一起为一个值的话那么另一个相减其实也是可以的
比如 在第一个例子中 nums = [2,7,11,15] target = 9
那么 2 + 7 = 9 target , target - 2 = 7
那么可以用 target - 2 得到一个 7 如果用 7 能够再后面的数组中找到就能得到合适的值,然后取下标就完成了这道题.
class Solution {
public:
vector<int> twoSum(vector<int> &nums, int target) {
vector<int> res;
for (unsigned int i = 0; i < nums.size(); ++i) {
int nums_temp = target - nums[i];
for (unsigned int j = i + 1; j < nums.size(); ++j) {
if (nums_temp == nums[j]) {
res.push_back(i);
res.push_back(j);
}
}
}
return res;
}
};
方法二 (哈希表)
vector<int> twoSum(vector<int> &nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); i++) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}