242:
是之前做过的一道题,记得用字母的ascii码来计算在数据结构里的位置然后记录出现次数的做法,但是具体的实现有点忘了。一开始还想复杂了想用个哈希表来做,后面才意识到直接用一个有26个位置的数组就可以。思路出来之后代码可以比较轻松地写出来。
349:
温习了一下set的基础知识,但一开始还是没有思路。总想着同时遍历两个数组+比较,然后就陷入了暴力解法的思路里。看了一点题解,了解到可以通过把数组里的元素放进set里利用set的无重复特性进行比较,但是很快又被只用了一个set给卡住了。
初始的想法是通过用一个set记录数组1,然后遍历数组2跟set作比较,遇到数组2里没有但set里面有的元素就把它remove,反之则继续遍历。但这个方法的问题就在于如果数组2本身就是数组1的子集,那remove的条件就不会触发,从而无法移除多余的元素。
又思考了15分钟无解,遂看题解:原来是通过用两个set,第一个存放数组1的元素,第二个存放用set1和数组2比较后两边都有的元素,形成一个result set,最后建立一个新数组来return result set里的元素。
202:
这题不看题解的话很容易陷入尝试解决数学问题的坑里。明确了false的条件是不能碰到重复数进入循环之后思路就会清晰很多。重点是要写对求各个位数的平方和的方法和在主方法里更新n来让程序计算新数字。不然就会重复计算第一个数然后在第二次循环时必定return false。
1:
之前用哈希表的方法做过一次,但这次做下来感觉还是没完全理解。
这次一开始是想用哈希表的key来存放遍历过的元素,但是没有想清楚value应该放什么。首先是用value来统计元素出现的次数,然后再在遍历的过程中找哈希表中有没有 target - nums[i] 的结果,但这样就无法记录题目所需要的元素的下标。
看到题解里的“用value来记录元素在数组中的下标”之后一下子就豁然开朗了。
本想着今天的前三道题能提供一些insight,但举一反三失败了,还需再接再厉。