栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

两数之和,哈希map使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

两数之和,哈希map使用

返回一个数组的方法:
在C++中,可定义一个动态数组:vector res;将需要返回的所有数push_back进动态数组中。num.size()
在java中,可定义一个数组:int[ ] res={0,0}; res[0]=1;res[1]=2;进行赋值,最后返回res。获取数组长度:num.length
在python中,定义数组:res = [ ] ,使用res.append()添加内容
(1)使用两个for循环暴力实现
思路:让第一个数分别和后面的数相加,与target比较,接着让第二个数和后面依次相加,以此类推,计算量较大

 vector twoSum(vector& numbers, int target) {
        // write code here
        vector res;
        for(int i=0;i 


思路:从第一个数开始,让target减去第一个数,存放在temp中,依次和后面的数比较,都不相等则让target减去第二个数。与上面的方法相比没有太大优势,两者差不多。

vector twoSum(vector& numbers, int target) {
        // write code here
        vector res;
        for(int i=0;i 


用python提交代码运行结果如下,相比C++代码,运行时间慢,占用内存多。

(2)哈希表map
map<关键字key,该关键字的值value>,数据成对出现,关键字map只能在map中出现一次
map mp;< , >两个位置中可以是任意类型
1.插入:使用[ ]进行单个插入
map mp;
// 如果已经存在键值2015,则会作赋值修改操作,如果没有则插入
mp[2015] = “Tom”;//即为mp<2015,“Tom”>
2.查找:map.find()的用法
查找key,当数据key出现时,返回key对应的value,否则返回mp.end()
map.end()指向map的最后一个元素之后的地址
map.begin()指向map的第一个元素
例:
iter = mp.find(2015);
iter!=m.end()表示:mp中存在2015
思路:
1.创建一个map存放数组及其对应的下标
2.从求和变为查找一个数,条件:能找到这个数并且不是其本身

C++:
map mp;
mp[numbers[i]]=i;
mp.find(target-numbers[i])!=mp.end() && mp[target-numbers[i]]!=i
java:
HashMap mp = new HashMap();
mp.put( numbers[i] , i );
mp.containsKey(target-numbers[i]) && i!=mp.get(target-numbers[i])
python:
mp={} #定义一个哈希表存储numbers[i]和其对应的下标
mp[numbers[i]]=i;
简单表述:
if num in mp: #如果mun这个数在mp中
if mp[mun]!=i: #并且如果num对应的key不等于i

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号