遍历numbers,定义m_map,键为之匹配的另外一个数,值为索引(从1开始)。遍历时查看另外一个数是否出现,如果能够找到并且不是自身则输出,输出时将小的先放入vector中。没有出现,则将当前的数及索引存入到m_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
vector<int> rst;
map<int,int> m_map;
for(int i=0;i<numbers.size();i++)
{
map<int,int>::iterator iter = m_map.find(target-numbers[i]);
if(iter!=m_map.end())
{
int m = iter->second;
int n = i+1;
//如果是同一个数则跳过;
if(m ==n)
continue;
//如果不是同一个数则将小的索引先放入到vector中并结束查找;
if(m > n)
{
rst.push_back(n);
rst.push_back(m);
}else
{
rst.push_back(m);
rst.push_back(n);
}
break;
}
else
{
//如果没有找到则存储;
m_map[numbers[i]] = i+1;
}
}
return rst;
}
};
京公网安备 11010502036488号