方法1:暴力遍历
思路
code
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
//i的范围是[0,nums.size()-2],即最后取到的是向量的倒数第二个位置,与j(i+1)——倒数第一个值相加
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return vector<int>{i, j};
}
}
}
return {};
}
};
方法2:hash 表
思路
复杂度
code
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); ++i) {
m[nums[i]] = i;
}
for (int i = 0; i < nums.size(); ++i) {
if (m.find(target - nums[i]) != m.end() && m[target - nums[i]] != i) {
return vector<int>{i, m[target - nums[i]]};
}
}
return {};
}
};
原文:https://www.cnblogs.com/bky-hbq/p/13134354.html