876_链表的中间结点

简介: 876_链表的中间结点

876_链表的中间结点

 

package 链表;
/**
 * https://leetcode-cn.com/problems/middle-of-the-linked-list/
 * @author Huangyujun
 *
 */
public class _876_链表的中间结点 {
    public class ListNode {
              int val;
              ListNode next;
              ListNode() {}
              ListNode(int val) { this.val = val; }
              ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }
    public ListNode middleNode(ListNode head) {
        //先获得链表的长度,细节错误:头指针在这里已经移动到末尾了,导致后边的移动发生错误,修改为临时指针tmp来辅助
        int len = 0;
//        while(head != null) {
//            len++;
//            head = head.next;
//        }
        ListNode tmp = head;
        while(tmp != null) {
        len++;
        tmp = tmp.next;
    }
        //如果是奇数,例如7,/2(int)=3,可以移动 3 步 1 2 3 4 5 6 7
        //如果是偶数,例如 8,/2(int)=4, 1 2 3 4 5 6 7 8
        // 移动 /2(int) 步即可
        int mid = len / 2;
        while(mid-- > 0 && head != null) {
            head = head.next;
        }
        return head;
    }
}
目录
相关文章
|
11月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
166 1
|
算法
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
114 0
链表的中间结点
链表的中间结点
306 57
|
10月前
|
存储 算法 搜索推荐
链表的中间结点
【10月更文挑战第24天】链表的中间结点是链表操作中的一个重要概念,通过快慢指针法等方法可以高效地找到它。中间结点在数据分割、平衡检测、算法应用等方面都有着重要的意义。在实际编程中,理解和掌握寻找中间结点的方法对于解决链表相关问题具有重要价值。
216 1
|
11月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
121 0
【数据结构OJ题】链表中倒数第k个结点
牛客题目——链表中倒数第k个结点
104 1
【数据结构OJ题】链表中倒数第k个结点
LeetCode第19题删除链表的倒数第 N 个结点
该文章介绍了 LeetCode 第 19 题删除链表的倒数第 N 个结点的解法,通过使用快慢双指针,先将快指针移动 n 步,然后快慢指针一起遍历,直到快指针到达链尾,从而找到倒数第 N 个结点的前一个结点进行删除,同时总结了快慢指针可减少链表遍历次数的特点。
LeetCode第19题删除链表的倒数第 N 个结点
【数据结构OJ题】链表的中间结点
力扣题目——链表的中间结点
98 0
【数据结构OJ题】链表的中间结点
【刷题记录】链表的中间结点
【刷题记录】链表的中间结点
|
算法
19.删除链表的倒数第N个结点
19.删除链表的倒数第N个结点