【JAVA】力扣-876-链表的中间结点
2023-09-27 14:26:46 时间
一、问题
力扣题目链接:链表的中间结点
二、解题思路
问题的关键也在于我们无法直接得到单链表的长度 n,常规方法也是先遍历链表计算 n,再遍历一次得到第 n / 2 个节点,也就是中间节点。
如果想一次遍历就得到中间节点,也需要耍点小聪明,使用「快慢指针」的技巧:
我们让两个指针 slow 和 fast 分别指向链表头结点 head。
每当慢指针 slow 前进一步,快指针 fast 就前进两步,这样,当 fast 走到链表末尾时,slow 就指向了链表中点。
三、解题代码
public ListNode middleNode(ListNode head) {
ListNode fast =head,slow =head;
while (fast != null && fast.next != null){
slow = slow.next;
fast =fast.next.next;
}
return slow;
}
相关文章
- java界面编程(9) ------ 列表框
- Java开发手册
- Java 内存分配(堆、栈、常量池)
- 【Java---数据结构】链表(单向不带头非循环链表)
- 小米Java一面面经
- 第58节:Java中的图形界面编程-GUI
- 第二十三节:Java语言基础-详细讲解函数与数组
- java实现的人民币大小写转换
- Garbage Collectors – Serial vs. Parallel vs. CMS vs. G1 (and what’s new in Java 8)
- 《Android游戏开发详解》一2.4 执行Java程序
- Caused by: java.lang.ClassNotFoundException[android的终极解决错误]
- java双向链表
- 【Java数据结构与算法】LeetCode 0024.两两交换链表中的节点
- 关于Java加壳和代码混淆
- eclipse创建一个java项目并写一个简单的Helloworld