力扣 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)!