git链接
91.解码方法
1.直观的思路,递归加剪枝应该是没有问题的。
2.递归加剪枝超时了,例如对于45个1这种,就会出现次数极多的尝试,思考了一下,这个应该使用动态规划来实现。
3.一开始没考虑解码方案不存在的情况,错了很多次
116.填充每个节点的下一个右侧节点
1.上来的直接思路,层序遍历然后一直往右连,加个层级标记,同一级继续右连。
2.可以逐级建立,利用上级留下的next,就可以实现题目要求的进阶
125.验证回文串
1.关键是解决如何匹配的问题,一个字符不考虑大小写这一问题,想到的是转为数字,注意,因为大小写字母之间插入了几个字符,因此差值并不是26,差值为32.大写字母范围为65-90,小写字母为97-122,数字1-9对应的字符的值为48-57
2.python提供了isalnum(),lower(),不用像我这样写这么复杂的
122.买卖股票的最佳时期II
1.核心应该是低买高卖,一遍扫描并记录即可得到结果
130.单词接龙
1.即四个方向都是x或者将要变成x的格子
2.没有好思路,直接上题解。最终不需要被置为X的格子都是直接或简介与边缘的格子连接。直接搜索出这样的格子及相连格子即可
3.题解一看就明白了,需要变的一定是和边缘有连接的,因此可以从边缘开始递归。或者先把边缘的找出来,标记成新的字母例如’A‘,然后组成一个队列,迭代搜索
131.分割回文串
1.直观思路,先拆分成单个,然后从里面组出2个,3个这种长度的,进行判断,成功就生成新的结果。
2.看题解,我的直观思路有问题,复杂度太大。思路调整为从左往右不停的添加新的字符更合理。
134.加油站
1.可以类似于双指针的思路选一个起点开始往后走,走不动了将起点后移动,并记录数据变化。反复这样,如果可以走通必然会首尾相接,走不通会再次回到起点。
2.经过试写之后,发现起点不必遍历搜索,起点必须满足条件,即起点获得的油必须多于到达下一个点的油。因此不需要试那么多次,把可能的起点都试一下即可。按该思路写的,逻辑正确,问题在于遇到特殊的会因为重复计算而超时,还是得和1的思路结合
3.官方题解用数学证明再做的,有一点点无奈
137.只出现一次的数字2
1.这题硬做非常简单,甚至可以投机取巧,用出现两次作为临界值都行。不使用额外空间没想到,直接看了题解
216.组合总和3
1.不考虑空间复杂度的话很容易实现,利用递归即可
16.最接近的三数之和
1.暴力解法显然不行。应该还是先排序后计算,记录上一个计算的值,不停逼近
2.题目没有明说,但是需要思考去重的问题。比如一共有3个1,但是只存在一个用了两个1的答案,需要跳过重复的解。这儿的做法和15题如出一辙
1190.反转每对括号间的子串
1.一眼看去用栈加一个队列来实现即可。写的时候实际想了一下,也用不上队列,可以在队列的部分直接用字符串连接然后再取值放回去。
2,答案的思路二值得一看,参考实现了下。思路是从两头开始遍历,碰到括号改变方向。
待续
总结下,这段时间事太多,写的太少了,下个季度得严格要求下自己了