题解 | 两数之和

两数之和

https://www.nowcoder.com/practice/c4a4f030ca374d9bb9df5c0bdf388626

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    // 这个题用到的映射应该是下标和值的映射
    // 可以用两个哈希表 一个用来通过下标找到值 另外一个通过值找到下标 都是O(1)的时间复杂度
    // 注意哈希表的count 还有find等操作都是基于键的 不是基于值的
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map <int,int>mp1;
        unordered_map <int,int>mp2;
        int len=nums.size();
        int num1;
        int num2;
        for(int i=0;i<len;i++)
        {
            mp1[i+1]=nums[i];
            mp2[nums[i]]=i+1;
        }
        for(int i=0;i<len;i++)
        {
            if(mp2.count(target-nums[i])==1)
            {
                num1=mp2[nums[i]];
                num2=mp2[target-nums[i]];
                break;
            }
        }
        vector<int>res;
        res.push_back(num1);
        res.push_back(num2);
        return res;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:04
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务