首页 > 其他分享 >快慢指针-lc876链表的中间节点

快慢指针-lc876链表的中间节点

时间:2023-03-24 11:00:23浏览次数:48  
标签:head lc876 ListNode val 结点 next 链表 指针

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

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

示例 1:

img

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

示例 2:

img

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
思路:利用快慢指针遍历链表,当快指针走完时,慢支真走到一半既为中间
//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 {
    //如果利用快慢指针



    //若是链表无环 快指针到头,慢指针则是中间
    // 1,2,3,4,5,6,
    // 1,2,3,4,5,6,7   4


    /**
     * 快慢指针
     * @param head
     * @return
     */
    public ListNode middleNode(ListNode head) {
        if(head == null){
            return head;
        }
        ListNode slow = new ListNode();
        ListNode fast = new ListNode();

        slow = fast = head;

        while(fast!=null && fast.next != null){
            fast = fast.next.next;
            slow = slow.next;
        }
        return slow;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

标签:head,lc876,ListNode,val,结点,next,链表,指针
From: https://www.cnblogs.com/xiaoshahai/p/17250762.html

相关文章

  • C++ this 指针
    在C++中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有 this 指......
  • 数据结构-->单链表OJ题--->讲解_02
    老铁们,本期讲解反转单链表双指针法代码如下所示:>现在附上测试环节:>以及最终实现的图样链表,如下:另外,别忘了对“Reverse_SLT”反转函数于头文件中声明!!这就是采用双指针......
  • 指针与链表
    指针与链表各位CTFer可以忽略这篇文章~各位CTFer可以忽略这篇文章~各位CTFer可以忽略这篇文章~指针指针的定义指针对于变量来讲就像单人间的宿舍号一样。每个人(变量......
  • 数据结构-->单链表OJ题--->讲解_01
    老铁们,本期我们开讲单链表OJ题的讲解:删除单链表中给定的val值,并将剩余的链表进行链接本题中val的值是11,删除后的图示链接为:>显然,我们需要指针cur移动来寻找指定数值val......
  • Java String 避免空指针的方法
    1.方法1判等时将变量作为参数或者使用TextUtils工具"".equals(name)TextUtils.equals(name,null)2.方法2使用TextUtils工具TextUtils.isEmpty(name)3.使用tryc......
  • 【leetcode-链表】两两交换链表中的节点
    题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例:1->2->3->42->1->4->3思路:首先需要建......
  • 141.环形链表
    给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整......
  • 指针常量和常量指针_C++_Learning1
    怎么读?遇到"*"读指针,遇到"const"读常量 一、指针常量//指针常量——指针(也就是它存储的地址)是一个常量,所以其值不能修改,但指向的内容可以修改 inta=10,b=......
  • JZ6 从尾到头打印链表
      链表是存储数据的一种方式,由于内存不是连续的,因此访问只能从表头访问表尾。本题需要从尾部到头打印链表,只能借助特殊的数据结构输出,但是访问顺序不会因此改变。首先......
  • C语言-指针学习笔记
    指针变量:变量的值是内存的地址普通变量的值是实际的值指针变量的值是具有实际值的变量的地址作为参数的指针:voidf(int*p);在被调用的时候得到了某个变量的地址......