给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解决方案:
使用map容器,遍历数组如果target-nums[i]在容器中,则返回相应结果,否则向容器添加元素
vector<int> twoSum(const vector<int> &nums, int target) {
unordered_map<int, int> map;
vector<int> res;
if (nums.size() <= 1) {
return res;
}
for (int i = 0; i < nums.size(); i++) {
int t = target - nums[i];
if (map.count(t)) {
res.push_back(i);
res.push_back(nums[t]);
} else {
map[nums[i]] = i;
}
}
return res;
}