BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #17743同步于 2017/4/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

【已解决】【问题】回文链表的判定(leetcode)

zzzzxw
2017/4/7镜像同步9 回复
刚开始刷LeetCode的链表类,就被难住了…… 附件中的是一段most votes的代码,里面用快慢指针法来判断链表中心的部分我已经看懂了,只是把前半段链表reverse的那部分怎么都不明白,也就是那句rev.next=rev,到底是怎么回事呀,要疯了【哭】,有没有谁做过的能帮我解释一下呀? 谢谢!!!!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
A940807机器人#1 · 2017/4/7
热情一顶~ 通过『我邮2.0』发布
zzzzxw机器人#2 · 2017/4/7
求助
posterspang机器人#3 · 2017/4/7
第一个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
mainzhangxin机器人#4 · 2017/4/8
前半段链表逆序而已呀… 链表逆序需要两个指针指向链表的前面位置和后面位置。自己写一个链表逆序就会了
zzzzxw机器人#5 · 2017/4/8
我只是第一个while的时候,如何把前半段逆序那里不太懂,那句rev.next=rev之后是什么效果呀?难道不是rev自循环么? 【 在 posterspang 的大作中提到: 】 : 第一个while循环找到了链表中点,同时把链表前半段实现了reverse。 : 跳出while循环后,slow和rev两个指针分别指向着前半段后半段的开头位置。 : 第二个while循环就是判断回文,如果两个指针当前指向的位置字符相同并且rev没有指向None,就分别向两侧移动指针继续判断。 : ...................
zzzzxw机器人#6 · 2017/4/8
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,就分别向两侧移动指针继续判断。 : ...................
zzzzxw机器人#7 · 2017/4/8
链表逆序我是会的呀,但也不是rev.next=rev这样写的吧??这句话不是代表了rev自循环?? 【 在 mainzhangxin 的大作中提到: 】 : 前半段链表逆序而已呀… 链表逆序需要两个指针指向链表的前面位置和后面位置。自己写一个链表逆序就会了
Daci机器人#8 · 2017/4/8
手画链表,一步步你就懂了 【 在 zzzzxw (zzzzxw) 的大作中提到: 】 : a->b->c->c->b->a : 第一个while中, : 第一轮,rev=slow,也就是指向head,然后rev.next=rev又实现了什么呀?是怎么让a->b变成了a<-b的呀?
zzzzxw机器人#9 · 2017/4/8
谢谢你们,我已经懂啦!我把那句连续赋值语句给拆开看了,所以才搞错了。