leetcode1_两数之和


1、题目

 2、代码分析

   主要是参考代码。

  这里我的思维陷入了误区,之间用了很多双指针前后逼近的方法,然后觉得排序之后也可以这么做,一般来说是可以的,但是麻烦在于这里需要排序之前的序号。

  这里可能使用python的话,会简单一点,但是使用vector好像需要自己手动去找。

  不管了,这里用map去查找比较好。

   参考代码:

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};
            }
            map.insert(pair<int, int>(nums[i], i));
        }
        return {};
    }
};