JAVA——快慢指针解决链表相关问题(一)

JAVA——快慢指针解决链表相关问题(一),第1张

JAVA——快慢指针解决链表相关问题(一)

问题:给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
例如:
输入:[1,2,3,4,5,6,7,8]
输出:此列表中的结点 5 (序列化形式:[4,5,6])

思路:首先要考虑链表为空的情况。利用快慢指针的方法定义一个快指针(每次走两格),慢指针(每次走一格)。当快指针走大到最后一个节点(奇数个)或者最后一个的.next处(偶数个)时,返回slow的值。

主要代码:

class ListNode{
    public int val;
    public ListNode next;
}
public ListNode middleNode(ListNode head){
        if(head==null||head.next==null){return head;}
        ListNode snow=head;
        ListNode fast=head;
        while((fast!=null)&&(fast.next!=null)){
            ListNode flag=fast.next;
            fast=flag.next;
            snow=snow.next;
        }
        return snow;
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存