0
点赞
收藏
分享

微信扫一扫

Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce

春意暖洋洋 2024-07-24 阅读 26

nums = [2,7,6,3] target = 9

需要在这个中找到 nums中数字下标,累加和等于target

也就是说既要数字下标,又要nums中数字,还要查找

因此,考虑map这种既有key 又有value的哈希表

问题是 map,unordered_map, muti_map用哪一个呢?

这个题目没有要求key有序(key是nums[i]),且key不可重复,为了提高查找效率,选用unordered_map


细节部分:

map中插入key value对用map.insert(pair<int,int>(nums[i],i));

对于map中value的部分,用iter->second

auto iter = map.find(target-nums[i])

iter->second

// @before-stub-for-debug-begin
#include <vector>
#include <string>
#include "commoncppproblem1.h"

using namespace std;
// @before-stub-for-debug-end

/*
 * @lc app=leetcode.cn id=1 lang=cpp
 *
 * [1] 两数之和
 */

// @lc code=start
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        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 {};
    }
};
// @lc code=end

举报

相关推荐

0 条评论