求倒数第N个节点思路:“标尺”。在遍历时一个空间始终存储着离它距离为N的节点的引用。
中间节点思路:联想到“烧一跟香需要一小时,两头同时点着烧完需半小时”原理。一个速度为1的遍历,同时有一个速度为2的遍历,当速度为2的遍历结束时,速度为1的就遍历到中间节点。
此思路可以延伸到一次遍历找到任意1/n(长度的任意1/n)的节点位置。
思路清晰后,实现就很简单,代码略。
求倒数第N个节点思路:“标尺”。在遍历时一个空间始终存储着离它距离为N的节点的引用。
中间节点思路:联想到“烧一跟香需要一小时,两头同时点着烧完需半小时”原理。一个速度为1的遍历,同时有一个速度为2的遍历,当速度为2的遍历结束时,速度为1的就遍历到中间节点。
此思路可以延伸到一次遍历找到任意1/n(长度的任意1/n)的节点位置。
思路清晰后,实现就很简单,代码略。