【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)

简介: 【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)

题目

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

提示:

  • 链表的结点数范围是 [1, 100]
  • 1 <= Node.val <= 100

Related Topics

链表

双指针

👍 977

👎 0

思路

  • 快慢指针
  • slow指针和fast指针都指向head头节点,每当slow前进一步,fast指针就前进两步,当fast指针到链表末尾的时候,slow指针就到中点了。

解法

//给你单链表的头结点 head ,请你找出并返回链表的中间结点。 
//
// 如果有两个中间结点,则返回第二个中间结点。 
//
// 
//
// 示例 1: 
// 
// 
//输入:head = [1,2,3,4,5]
//输出:[3,4,5]
//解释:链表只有一个中间结点,值为 3 。
// 
//
// 示例 2: 
// 
// 
//输入:head = [1,2,3,4,5,6]
//输出:[4,5,6]
//解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
// 
//
// 
//
// 提示: 
//
// 
// 链表的结点数范围是 [1, 100] 
// 1 <= Node.val <= 100 
// 
//
// Related Topics 链表 双指针 👍 977 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
/**
 * Definition for singly-linked list.
 * 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; }
 * }
 */
class Solution {
    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;
    }
}
//leetcode submit region end(Prohibit modification and deletion)


目录
相关文章
|
1天前
|
算法
❤️算法笔记❤️-(每日一刷-160、相交链表)
❤️算法笔记❤️-(每日一刷-160、相交链表)
6 1
|
11月前
|
算法
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
代码随想录算法训练营第三十一天 | LeetCode 455. 分发饼干、376. 摆动序列、53. 最大子数组和
54 0
|
存储
剑指offer 36. 复杂链表的复刻
剑指offer 36. 复杂链表的复刻
47 0
|
JSON 算法 JavaScript
日拱算法:典例-快慢指针解“环形链表”
本篇带来一道基础但典型的体现快慢指针思路的算法题:环形链表 快慢指针是双指针的一种,用于判断链表是否有闭环,十分好用~ 冲ヾ(◍°∇°◍)ノ゙
|
算法 索引
【切图仔的算法修炼之旅】LeetCode141:判断链表是否有环
【切图仔的算法修炼之旅】LeetCode141:判断链表是否有环
101 0
【切图仔的算法修炼之旅】LeetCode141:判断链表是否有环
|
存储 算法
在家练练基础算法 | 链表篇
在家练练基础算法 | 链表篇
在家练练基础算法 | 链表篇
还不知道层序遍历有多强?带你一口气打穿十道题(动图理解)(上)
众所周知二叉树的遍历一般是前中后序遍历,但其实还有一种层序遍历。它是按照一层一层的顺序去遍历二叉树
173 0
还不知道层序遍历有多强?带你一口气打穿十道题(动图理解)(上)
|
存储
还不知道层序遍历有多强?带你一口气打穿十道题(动图理解)(中)
还不知道层序遍历有多强?带你一口气打穿十道题(动图理解)
117 0
还不知道层序遍历有多强?带你一口气打穿十道题(动图理解)(中)
|
算法 前端开发 程序员
「LeetCode」剑指Offer-14-I剪绳子⚡️
「LeetCode」剑指Offer-14-I剪绳子⚡️
109 0
「LeetCode」剑指Offer-14-I剪绳子⚡️
|
算法 前端开发 程序员
「LeetCode」剑指Offer-14-II剪绳子II⚡️
「LeetCode」剑指Offer-14-II剪绳子II⚡️
120 0
「LeetCode」剑指Offer-14-II剪绳子II⚡️