赞
踩
关于链表解法很好的总结:https://suanfa8.com/data-structure-basic/linked-list/practice/
设计好一个结点,里面包含指向后继的属性,那么这就构成了一个链表。手动建链表本质就是设计一个有后继属性的数据结构。
fast每次前进2个节点,slow每次前进1个节点。
若fast,slow都是从起始节点head出发,则当fast == null || fast.next == null时,slow指向的节点是最中间的节点(若节点的个数是奇数)或右半边的第一个节点(若节点的个数是偶数)。
想要处理左半边的最后一个节点的后继,则应该让fast从head.next出发。
fast从head.next出发,slow从起始节点head出发,则当fast == null || fast.next == null时,slow指向的节点是最中间的节点(若节点的个数是奇数)或左半边的最后一个节点(若节点的个数是偶数)。
若存在环,fast,slow都从起始节点head出发,则当他们相遇时,fast走过的路径是slow的两倍。
node.next在等号左边表示node的后继索引。
node.next在等号的右边表示node的后继结点。
一个是指针,一个是结点。
比如,206. 反转链表递归解法中,一定是要给当前结点head的后继赋空,否则回到上一层递归中,做遍历时会陷入死循环。
又比如,牛客题目NC207 排序奇升偶降链表中,如果不给分离后的odd后继赋nu
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。