[英]Remove kth last element from a Singly Linked List in a single pass
我正在练习Python,却想不出任何解决此问题的方法。 问题是仅在一个遍历和恒定的空间内从单个链接列表中删除第k个最后一个元素。 我只能想到需要2次通过的解决方案。 另外,在问题中,没有提到列表的大小,因此我假设该大小是已知的。 请问有人可以单次通过此方法吗?
进行操作时,将临时对象的指针/位置缓存在要删除的临时对象之前。
因此,将有一个循环,直到最后。 将有一条语句在temp中缓存第(ik-1)个元素。
当此循环结束时,temp将具有要删除的项目的位置。
希望这可以帮助。
如果知道大小s - kth
删除s - kth
元素。
如果不是这种情况,那么我将使用两个跑步者,一个是比第二个领先k个索引。 当第一个跑步者到达列表的末尾时,第二个跑步者正好指向第k个最后一个元素。
方法2(使用两个指针)
维护两个指针–参考指针和主指针。 初始化引用和主指向head的指针。 首先将参考指针从头移到n个节点。 现在将两个指针一一移动,直到参考指针到达终点。 现在主指针将从末尾指向第n个节点。 返回主指针。
可用python实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.