java - 如何从链表的中间元素中找到第二个元素?
问题描述
在面试中问我从链表的中间节点找出第二个节点的值?他们希望在 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;
}
推荐阅读
- haskell - Haskell 无法推断类型(或类型级别的 Nat)等式,尽管已明确注释?
- powershell - powershell 联系方式 | fl 结果排序
- jquery - 由于 VueJS,模态不会使用 jQuery 关闭
- ios - IOS Swift 4 隐藏键盘,同时点击周围干扰按钮按下
- r - 如何遍历列表并在 R 中创建单独的数据框
- coq - 证明函数应用在两个等价函数上的相等性
- php - PHP 将数字截断为最多 15 位,以实现与 MS Excel 中相似的精度
- c++ - 是否会为非类型模板参数的不同值实例化新类
- spring - Spring Boot JTA with Artemis Issue
- elasticsearch - 如何列出 Elasticsearch 集群上所有存储的脚本?