题目(1)两数之和
解法一:暴力法
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
int i,j=0;
int nums_size = nums.size();
for(i=0;i<nums_size;i++)
{
for(j=i+1;j<nums_size;j++)
{
if( target == nums[i]+ nums[j])
return {i,j};
}
}
return {};
}
};
解法二:
采用map,
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map <int,int> map;
for(int i = 0; i < nums.size(); i++) {
auto iter = map.find(target - nums[i]);
if(iter != map.end()) {
return {iter->second, i};
}
//map.insert((nums[i], i)); //返回的是数组下标;
map[nums[i]] = i;
}
return {};
}
};