01 two sum

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int,int>hash;
        build(nums,hash);
        int index2=0;
        vector<int>result;
        for(int i=0;i!=nums.size();i++){
            index2=target-nums[i];
            if(hash.find(index2)!=hash.end()){
                if(i+1<hash[index2]){
                result.push_back(i+1);
                result.push_back(hash[index2]);
                return result;
                }
            }
        }
        
    }
    void build(vector<int>nums,map<int,int>&hash){
        for(int i=0;i!=nums.size();i++)
        hash[nums[i]]=i+1;
    }
};

用map实现hash

 

开始的时候比较蛋疼,它要返回位置。

于是在map里记录了位置,解决。

 

posted on 2015-05-27 08:12  88123  阅读(111)  评论(0编辑  收藏  举报