242.有效的字母异位词
这道题直观思路就是直接统计每个字母出现的数量,然后对比两个一不一样。像这种键值对应的直接用哈希会很方便。对于python,里面的Counter很好用,相当于直接帮我们统计了每个出现次数。要不还要用list或者dict来循环统计。如果用dict来统计的话,defaultdict也很好用,直接可以+1, -1操作。而对于Counter类,可以使用==,&等逻辑判断运算。题解如下:
349. 两个数组的交集
这道题解法同样非常直观,想法是直接取两个数组的交集,然后去重复就好。python没有直接取交集的方法,不过可以新建一个数组完成取交集。具体方法如下:
def intersect(nums1, nums2):
return [i for i in nums1 if i in nums2]
不过这道题也可以先去重复,再取交集,这里可以用set,set可以直接用&或者intersect取交集。或者可以用上文提到的Counter,它也可以使用&操作。题解如下:
202. 快乐数
这道题乍一看有点吓人,但是这种肯定是有规律的,不会让你一直试下去的。那这道题就是看什么时候开始循环,如果开始循环了还没有1,那肯定就不是。如果出现1了,那就是。那么这道题就需要把所有出现的和记录下来,然后如果某一次出现了之前记录过的,就说明循环了,那就可以停下来了。题解如下:
这道题要学的是如何取一个数的每一位,一般余数取当前位,整除10取上一位。
1. 两数之和
梦开始的地方。这道题难点在于他要输出两个数的索引值,而不是数本身。如果输出数本身,那么这道题就简单多了,最笨的方法就是两个循环。那么如何用一个循环解决问题,首先,在第一遍遍历时,遇到的每个数都有可能是结果,而和他对应的可能在前面和后面,那么我们就用target和当前数的差值表示它所需的剩下的数,同时记录下它的索引值。这样往后遍历时,如果遇到这个差值,就可以马上返回了。题解如下:
其它:
学习时长:3h
学习心得:学会一些好用api