自学内容网 自学内容网

1.两数之和


title: 1.两数之和
tag: 哈希表
categories: 代码随想录

1. 两数之和

std:unordered_map<int,int> map;
//key 存数字 value存index
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 {};
unordered_map<int,int> map;
for(int i = 0 ; i <nums.size();i++){
unordered_map<int,int>::iterator iter=map.find(target-nums[i]);
    if(iter!=map.end()){
        return {iter->second,i};
    }
    map.insert(pair<int,int>(nums[i],i));
}
return {};

Q: 在这边 map.insert(pair<int,int>(nums[i],i)); 可以换成 map.insert(unordered_map<int,int>(nums[i],i));吗

A: 不可以,因为 std::unordered_map 是一个关联容器,其中的元素是键值对(key-value pair),而 unordered_map<int,int>(nums[i], i) 是一个无序键值对,不能直接用来插入到 std::unordered_map 容器中。

在这个例子中,我们需要将每个元素的值 nums[i] 和下标 i 插入到 map 中,以便在后续查找过程中能够快速找到匹配的元素。因此,我们需要使用 std::pair<int, int> 类型来表示每个元素的键值对,然后将其插入到 map 中。

在代码中,map.insert(pair<int, int>(nums[i], i)); 表示将一个由 nums[i]i 组成的键值对插入到 map 中。这里使用了 std::pair<int, int> 类型来表示键值对,从而可以将其作为 map 的元素插入到容器中。

需要注意的是,C++ 中提供了很多种容器类型,每种容器类型都有其特定的用途和特性。在使用容器时,需要根据具体情况选择合适的容器类型,并了解容器类型的特性和使用方法,以提高代码的效率和可读性。


原文地址:https://blog.csdn.net/maduit/article/details/142860411

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