美文网首页
leetcode的题目1. 两数之和(map的使用)

leetcode的题目1. 两数之和(map的使用)

作者: 二木二三水 | 来源:发表于2018-07-12 22:57 被阅读0次

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

    你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9

    所以返回 [0, 1]

    我的思路:利用双重循环,判断两数之和是否为t,相同就新建一个数组,分别将两个数的下标放进数组并返回。注意:这里不能使用排序,因为排序后,数字的位置就会改变,本题需要的返回的是下标。

    思路:使用循环将数组放进map中,数组的值作为key,下标作为value。遍历数组的元素,每一次计算target与元素的差,然后在map中寻找是否存在改差,存在则新建一个数组,将该元素的下标以及map的value放进数组中并返回。注意:target可能在存在半数(target/2的值),所以不仅要判断时候找到,而且要判断两个下标是否相同,相同则不对,进入下一轮遍历。要先判断是否找到,再判断下标是否相同,否则如果没有找到就会返回end()【NULL】,对null操作都会报错。

    map小结:https://blog.csdn.net/shuzfan/article/details/53115922

    定义:map<int,int>名称;

    获取值:map<int,int> a;   a->first (取key值)   a->second  (取value值)

    寻找map中是否存在某个值:a.find(值);   返回一个迭代器(相当于该类型的指针,使用时要先定义指针指向它)例如:map<int,int >::iterator it=a.find(值);   it->first......

    ps:C++11以上可以对类型名称进行简化,使用auto 可以自动找到其类型,

    简化后: auto it=a.find(值);

    遍历map的key和value:定义一个迭代器it(相当于指针)先指向map的开始(a.begin()),操作后,it++(将指针后移),知道it=a.end() (指向null结束)。

    相关文章

      网友评论

          本文标题:leetcode的题目1. 两数之和(map的使用)

          本文链接:https://www.haomeiwen.com/subject/lpqdpftx.html