LeetCode系列1—两数之和

题意

1. 两数之和

题解

方法一:暴力枚举

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

方法二:哈希表

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 {
    
    };
    }
};

おすすめ

転載: blog.csdn.net/younothings/article/details/120317629