返回信息流刚开始刷LeetCode的链表类,就被难住了……
附件中的是一段most votes的代码,里面用快慢指针法来判断链表中心的部分我已经看懂了,只是把前半段链表reverse的那部分怎么都不明白,也就是那句rev.next=rev,到底是怎么回事呀,要疯了【哭】,有没有谁做过的能帮我解释一下呀?
谢谢!!!!
这是一条镜像帖。来源:北邮人论坛 / python / #17743同步于 2017/4/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【已解决】【问题】回文链表的判定(leetcode)
zzzzxw
2017/4/7镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
第一个while循环找到了链表中点,同时把链表前半段实现了reverse。
跳出while循环后,slow和rev两个指针分别指向着前半段后半段的开头位置。
第二个while循环就是判断回文,如果两个指针当前指向的位置字符相同并且rev没有指向None,就分别向两侧移动指针继续判断。
input: a->b->c->c->b->a
after first while-loop: a<-b<-c c->b->a
^ ^
| |
rev slow
我只是第一个while的时候,如何把前半段逆序那里不太懂,那句rev.next=rev之后是什么效果呀?难道不是rev自循环么?
【 在 posterspang 的大作中提到: 】
: 第一个while循环找到了链表中点,同时把链表前半段实现了reverse。
: 跳出while循环后,slow和rev两个指针分别指向着前半段后半段的开头位置。
: 第二个while循环就是判断回文,如果两个指针当前指向的位置字符相同并且rev没有指向None,就分别向两侧移动指针继续判断。
: ...................
a->b->c->c->b->a
第一个while中,
第一轮,rev=slow,也就是指向head,然后rev.next=rev又实现了什么呀?是怎么让a->b变成了a<-b的呀?
【 在 posterspang 的大作中提到: 】
: 第一个while循环找到了链表中点,同时把链表前半段实现了reverse。
: 跳出while循环后,slow和rev两个指针分别指向着前半段后半段的开头位置。
: 第二个while循环就是判断回文,如果两个指针当前指向的位置字符相同并且rev没有指向None,就分别向两侧移动指针继续判断。
: ...................
链表逆序我是会的呀,但也不是rev.next=rev这样写的吧??这句话不是代表了rev自循环??
【 在 mainzhangxin 的大作中提到: 】
: 前半段链表逆序而已呀… 链表逆序需要两个指针指向链表的前面位置和后面位置。自己写一个链表逆序就会了
手画链表,一步步你就懂了
【 在 zzzzxw (zzzzxw) 的大作中提到: 】
: a->b->c->c->b->a
: 第一个while中,
: 第一轮,rev=slow,也就是指向head,然后rev.next=rev又实现了什么呀?是怎么让a->b变成了a<-b的呀?