LC 92 206 24
链表逆序问题, 206是个简单的从头到尾的逆序,92是部分逆序
问题的关键是注意null。
206中要注意head最后后面的next应该是null
可以的做法是prev设定为null, 相当于设定了一个为null的假头 (第一遍的做的时候手动做了这件事情,然后从第二个节点开始逆序了,感觉有点蠢)
92的要注意到一个case是m小于等于n,虽然这道题并不影响。第一次写没注意到这点,直接就设定prev是start的next cur是start的nextnext了。
如果出现m=n=length那么start.next.next是null。虽然这题并不影响,因为m-n=0直接跳出循环了,但是还是注意一下。
链表题包括 树类的题要多注意null!不能逻辑对了就觉得对了。
当然还可以写成recursive。虽然我不知道又占空间,还很别扭的递归方法有啥用=-=
程序停止的条件: 熟悉head为空return 空,上来第一条写的没毛病。
然后递归搜索的终止条件,搜到表尾,也就是head.next = null
然后首先递归搜索 head.next
然后回溯 head.next.next = head 本来是自己的后置节点变成自己的前置节点。
然后head.next = null 其实是对每个节点都做了这件事情,但是因为只有原来的头节点没有前置节点,所以只是为头节点设置了后置节点为null
24算是逆序的一个应用
一对对 逆序