欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1. Two Sum

程序员文章站 2024-02-17 12:38:04
...

题意

给定一个数组和一个数,问数组里哪两个数相加之和等于这个数。

思路

开两个map,一个map记录某个数是否存在,一个map记录这个数的位置在哪里,找到之后return即可,时间复杂度O(nlogn)

代码

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