遍历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; } };