0
点赞
收藏
分享

微信扫一扫

LeetCode-1-Two Sum-简单-暴力/哈希

海牙秋天 2022-03-12 阅读 73

暴力写法自己写的↓: 也可以直接return {i,j};

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int>ans;
        for(int i = 0; i < nums.size(); i++){
            for(int j = i+1; j < nums.size(); j++){
                if(nums[i]+nums[j] == target){
                    ans.push_back(i);
                    ans.push_back(j);
                    return ans;
                }
            }
        }
        return ans;
    }
};

 哈希表自己写的↓

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int>ans;
        unordered_map<int,int> map;
        int cnt = 0;
        for(int i : nums){
            map[i] = cnt++;
        }
        for(int i = 0; i < nums.size(); i++){
            int aim = target - nums[i];
            unordered_map<int,int>::const_iterator got = map.find(aim);
            if(got != map.end() && got->second != i){
                ans.push_back(i);
                ans.push_back(got->second);
                break;
            }
        }
        return ans;
    }
};

官方写的↓  好简洁 揣手手学习

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hashtable;
        for (int i = 0; i < nums.size(); ++i) {
            auto it = hashtable.find(target - nums[i]);
            if (it != hashtable.end()) {
                return {it->second, i};
            }
            hashtable[nums[i]] = i;
        }
        return {};
    }
};

 

举报

相关推荐

0 条评论