(LeetCode)Two Sum

来源:互联网 发布:肩膀疼 知乎 编辑:程序博客网 时间:2024/06/03 20:25

求和为target的下标相对小的两个数的下标。

我的办法时写一个结构体存储元素的值和起始位置然后将其和target的差值放入map容器中,然后遍历各个元素看其所需要的map值是否存在。

struct node{    int num;    int index;};class Solution {public:    vector<int> twoSum(vector<int> &numbers, int target){            map <int,node> hash;            vector <int> ans;            for (int i=0;i<numbers.size();i++){                node tmp;                tmp.num=numbers[i];                tmp.index=i;                hash[target-numbers[i]]=tmp;            }            for(int i=0;i<numbers.size();i++){                if(hash.find(numbers[i])!=hash.end()&&hash[numbers[i]].index!=i)                {                    ans.push_back(i+1),ans.push_back(hash[numbers[i]].index+1);                    sort(ans.begin(),ans.end());                    return ans ;                }            }            return ans;        }};


0 0
原创粉丝点击