day6
242.有效的字母异位词
题目
思路:
字母异位词是指两个字符串中每种字母出现的次数一样,true
两个for循环,第一个for遍历第一个字符串,用一个新数组记录每个字母出现的次数(用数组下标指代每个字母,一共26个字母,索引从0-25即可),出现一次,在对应位置+1;另一个for循环遍历另一个字符串,出现一个字母就在对应位置-1。如果数组有元素不为0,return false
349.两个数组的交集
题目
思路:
因为有限制数组在1000内,所以也可以用哈希;题解中是c++用法,std:set;但是python和js中需要其他方法(python:字典和集合、数组、集合;js:数组)
(一些相关基础概念在gpt聊天中)
202.快乐数
题目
思路:
先用函数计算每个数字平方和(取每一位数字),然后检测循环(使用一个集合(如 JavaScript 中的 Set)来存储所有出现过的平方和。如果在计算过程中产生了一个已经出现过的平方和,那么就意味着陷入了循环,这时可以判断该数不是快乐数。);重复计算平方和,直到结果为 1 或者发现循环。
1.两数之和
题目
思路:
需要知道是否遍历过某个元素,并且最后还要返回下标,所以应该用keyvalue来存,所以用map;
遍历的过程:target是7,遍历到第一个数字是2,需要5,于是去map里找5,没有,把2用keyvalue的形式存起来,去遍历下一位3,需要数字4,去map找,没有就存起来,直到找到合适的数据。
重点:
- 为什么会想到用哈希表
- 哈希表为什么用map
- 本题map是用来存什么的
- map中的key和value用来存什么的
当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
day7
454.四数相加ll
题目
思路:没太看懂
383.赎金信
思路:
与字母异位词那题类似的。
15.三数之和
题目
思路:
去重的逻辑很重要