leetcode 1两数之和

 使用哈希的方法:先将nums哈希表化,再遍历nums,寻找-nums[i]如果存在则为题目所求

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        //使用哈希表
        vector<int> re;
        unordered_map<int,int> m;
        for(int i=0;i<nums.size();i++){
            m[nums[i]]=i;
        }
        for(int i=0;i<nums.size();i++){
            int temp=target-nums[i];
            if(m.count(temp)>0&&m[temp]!=i){
                int j=m[temp];
                if(i>j) swap(i,j);
                re.push_back(i);
                re.push_back(j);
                break;
            }
        }
        return re;
    }
};

 

posted @ 2019-05-23 20:59  Joel_Wang  阅读(224)  评论(0编辑  收藏  举报