题目大意
https://leetcode.com/problems/regular-expression-matching/
跟这个题类似https://leetcode.com/problems/wildcard-matching/,只是匹配规则变化
题目分析
记忆化搜索,详细解释可以看注释
https://leetcode.com/problems/regular-expression-matching/
跟这个题类似https://leetcode.com/problems/wildcard-matching/,只是匹配规则变化
记忆化搜索,详细解释可以看注释
https://leetcode.com/problems/rotate-list
从右边第k个位置“反转”链表,看了好半天才明白题意,原来是右边的k个元素作为新链表的前k个元素,剩余的做为新链表的剩余元素。
我的方法是先算出链表长度,然后把前len - k个链接到链表尾部,但要注意一些特殊情况,如果k大于链表长度,则对k取len的模,如果取模等于0,相当于链表不做任何操作。
https://leetcode.com/problems/wildcard-matching/
判断一个字符串s是否满足模式串p,p中所含匹配符只可能是*
或 ?
典型的动态规划,下面我是用记忆化搜索实现,注意不能用int数组保存状态,否则会超内存,其实仅仅需要三个状态,因此用char数组就可以,0代表未计算过,1代表true,2代表false。
https://leetcode.com/problems/spiral-matrix/
https://leetcode.com/problems/spiral-matrix-ii/
这两个题目本质上是一道题,都是螺旋式或者生成打印矩阵
最开始我的实现还是每行或者每列少打印一个,留给下一列或者下一行处理,这样导致最后还要特殊判断到底是剩下1行/列,或者是两行/列。导致代码极其不优雅,虽然可以AC。我觉得刷leetcode目标不仅仅是AC,更要追求时间/空间复杂度,以及代码的优雅。看了disscuss区的高票答案,就是简单的每次“缩减”行或者列就可以很优雅的解出来。至于Spiral Matrix II反而更简单,题目要求的是生成螺旋正方形,可以几乎完全复用代码即可。