原题链接:https://leetcode.com/problems/two-sum/
原题:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
题意:
给你一个数组和一个目标数字,要求你在这个数组找到两个不同数字,它们相加等于这个目标数字,返回它们在数组中的位置。
思路:
可以暴力用两层for来查找,也可以用hashmap来查找。
AC代码(暴力版):
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int temp=0;
vector<int> result;
for(int i=0;i<nums.size();i++){
temp=target-nums[i];
for(int j=i+1;j<nums.size();j++){
if(nums[j]==temp) {
result.push_back(i);
result.push_back(j);
return result;
}
}
}
return result;
}
};
hashmap版:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> map;
int temp=0;
vector<int> result;
for(int i=0;i<nums.size();i++){
map[nums[i]]=i;
}
for(int i=0;i<nums.size();i++){
temp=target-nums[i];
if(map.find(temp)!=map.end()&&map[temp]>i){
result.push_back(i);
result.push_back(map[temp]);
return result;
}
}
return result;
}
};