两数之和
https://leetcode.cn/problems/two-sum/
为什么用哈希法?
为什么用map?
map究竟是用来做什么的?
学习内容
找到两个元素相加等于目标值,返回这两个元素所在数组的下标。
哈希表比较经典的题目。
有一个数组,数组可以2736。
目标值是9,要找到两个元素,相加等于9,并返回两个元素的下标。
多对符合的话返回一对。
哈希法解决这个题目。什么时候会想到用哈希表。
判断这个元素是否在集合中出现过?—用哈希法或者哈希表结构来做处理。
遍历一个元素时,要存放之前遍历过的元素。要判断下,这个元素是否之前遍历过,如果之前遍历过, 那就找到了一对,这一对相加等于9。元素6是否遍历过。判断出现过元素6所出现过的位置。遍历过的元素加到这个集合里,每次遍历到新位置后,判断寻找的元素是否在集合里出现过。在集合里出现过,就是之前出现过。集合用一种哈希表的结构。
应该用什么样的哈希表来存这个结构。要找一个元素。元素是否出现过,元素在数组里的下标。要判断两个元素,判断数组里的数值,还有数组里的下标。
数组可以做哈希映射,set也可以做哈希映射。要存放两个元素,此时应该用map来做映射。map的key和value。
数组里的数值来做key,而不要用下标。查找一个元素是否出现过。
把这个元素作为key,这才是map的作用。最快时间内查找这个元素是否出现过。
知道这个元素的下标,下标为这个元素的value。
这个题目解题过程,及m服务器托管网ap作用。
map功能。存放我们遍历过的元素。如何存放遍历过得元素。map集合。当前遍历的是元素2。找一下元素7是否遍历过。找元素7是否遍历过。上map里查询,map存放遍历过得元素。
查找元素7,是否遍历过,map没有。往后遍历。map是存遍历过得元素。把2放入map 集合。方便后面遍历时,用来查询遍历过得元素。value是0,用来存放下服务器托管网标。
元素2有没有遍历过,怎么知道有无遍历,去map里查。找到了元素2.map存放遍历过得元素。把元素2对应的下标也找到了。找到了结果集,符合要求。
对应下标为0,此时遍历的下标的位置是7,这个元素相加的值为目标值。
代码
map
key是int型,value是int型。
接下来遍历数组
for(i=0;ivalue,i
else{
//把遍历的元素加入到map中
map.insert(nums[i],i)
//存放到我们的map中
// 这个map不知道究竟要做啥
}
}
return 空集合
go补充
标准代码的改进
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net