两数之和
使用map遍历一次:
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
map<int,int> mp;
for(int i=0;i<numbers.size();i++){
if(mp.find(target-numbers[i])!=mp.end()){
return {mp[target-numbers[i]],i+1};
}
else{
mp[numbers[i]]=i+1;
}
}
return {};
}
};
map内有个find查找函数,查找的是key“地址”,但是我们如果转换key和value的存储,将我们知道的内容存进key,然后将value中作为输出下标累加1,就可以达到目的。
未使用map,遍历两次:
class Solution {
public:
/**
*
* @param numbers int整型vector
* @param target int整型
* @return int整型vector
*/
vector<int> twoSum(vector<int>& numbers, int target) {
// write code here
int index1=0;
int index2=0;
int flag=0;
for(int i=0;i<numbers.size()-1;i++){
for(int j=i+1;j<numbers.size();j++)
{
if(numbers[i]+numbers[j]==target)
{flag=1;
index1=i;
index2=j;
break;
}
if(flag)
break;
}
}
vector <int>ind={index1+1,index2+1};
return ind;
}
};