自学内容网 自学内容网

力扣 1两数之和

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


原文地址:https://blog.csdn.net/weixin_43261508/article/details/140362321

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!