java - 如何从链表的中间元素中找到第二个元素?

标签 java algorithm data-structures

面试中问我求链表中间节点起第二个节点的值?他们希望在 O(n) 时间复杂度内完成此操作。

我试图给出使用 O(n2) 获取中间元素的答案。但这无济于事。然后尝试使用慢指针和快指针在 O(n) 中完成。

节点慢,快;

    while (slow.next != null and fast.next.next != null){

    }

例如。输入链表:1 2 3 4 5 6 7 8 9 输出节点:7

因为中间节点是 5 并且它的第二个元素是 7

非常感谢解决方案。

最佳答案

Node getSecondAfterMind(Node head) {
  Node slow = head, fast = head;
  while(fast.next.next != NULL) {
    slow = slow.next;
    fast = fast.next.next;
  }
  if slow.next!= NULL && slow.next.next != NULL {
      return slow.next.next;
  }

   return NULL;
}

关于java - 如何从链表的中间元素中找到第二个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55411692/

相关文章:

java - 当从 java VM 调用设置 cookie 的 REST 服务时,cookie 是如何工作的?

java - 在现有分析之前注入(inject) Sonar 分析

java - 查找重复的单词

java - 为什么不推荐使用 hibernate 的 ClassMetadata.getIdentifier(Object, EntityMode)

java - 如何为Java ESAPI添加标签白名单

python - python 中的强数字

java - 实现velocity verlet算法java

java - Java 中的正则表达式映射实现

C++ 扩充 STL 数据结构

使用数组的循环队列操作