当被访问的节点被删除时,从最后一个节点开始查找第n个节点



所以问题是:从链表if nodes a disappearing once read的最后一个节点找到第k个节点。这应该只在一次传递中完成。

尽量避免额外的内存

我知道这个问题的平凡解决方案,其中两个指针(p和Q)到头节点,其中p增加N次,之后两个指针都增加。指针Q指向最后n个元素。

但这里的问题有些不同,这里的节点一旦被读取就会消失,所以没有办法使用双指针方法。

在阅读之前请不要关闭问题。因为这个问题是不同的。

谢谢

继续在某个地方存储K个元素,例如,如果K为6,则在遍历链表时在某个地方存储6个最新的读节点,在读取下一个节点时,存储该节点并从已存储的节点中删除最老的读节点。一旦链表结束,您将存储最后K个元素(使用链表或数组等),并且从最后的第K个元素将是最古老的存储元素。

这可能不是最有效的解决方案,因为我一边打字一边思考,但它应该工作。

  1. 创建大小为K的队列
  2. 顺序读取列表中的每个元素。
  3. 在读取每个节点时,复制节点并将其加入队列。如果队列已满,也取消队列。
  4. 读取列表中的最后一个节点后,将队列解除队列。这是倒数第k个元素

相关内容

  • 没有找到相关文章

最新更新