菜:26(D),27(D=),28(A+/E)
中:29(B+)
死:25(B)
今日总结:
25. k个一组翻转链表(B)
分析:久违的链表题,虽然是hard难度,但是并没有需要特别在意的地方。对给定的值进行分情况讨论,翻转链表的方式也是经常使用的。链表整合时的方法还是要多熟悉一下。
1 | # Definition for singly-linked list. |
26. 删除排序数组中的重复项(D)
分析:双指针的用法如果是第一次接触。还是觉得蛮有趣的。很好理解,慢指针记录当前不同元素个数,快指针对比寻找非重复元素(此题就是比较相邻即可),当找到非重复的赋值给慢指针对应位置即可。
这个题的引用法,还是挺有趣的。返回int。输出list。需要更改nums
1 | class Solution: |
27. 移除元素(D-)
分析:上同,没什么变化。
1 | class Solution: |
28. 实现strStr()(A+/E)
分析:还是比较有争议的一道题,涉及是否使用内置函数。如果,单纯算法角度。应该使用KMP算法。难度升高到hard。不管怎样学习一下,KMP算法。内置函数方法直接用find。太简单就省略了。
1 | class Solution: |
KMP版本(A+)该算法,会单独整理。
1 | class Solution: |
29. 两数相除(B+)
分析:注意这道题的要求。不可以使用乘,除,mod运算符。想了一下,大概使用数位运算吧。代码还是不太会实现。借鉴一下。初次使用这种方式,还是给与重视一下。
<< 移位运算符。移位是指二进制。左移一,相当于变大一倍。
1 | class Solution: |