Files
leetcode-master/problems/0000.TwoSum.md
youngyangyang04 0038609239 Update
2020-03-01 23:45:22 +08:00

1.3 KiB

题目地址

https://leetcode-cn.com/problems/two-sum/

思路

一般解法

代码:

优化解法

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

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

代码