LeetCode-回文链表(234)

题目描述:

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
在这里插入图片描述
因为这一题是受到876题求链表中间节点的启发,所以在这里也加一下。

876.链表的中间结点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
在这里插入图片描述
思路: 设置快慢指针,快指针以2为步长,慢指针以1为步长。因为两者是两倍关系,所以当快指针遍历完成后,慢指针就到达了中间节点。因为节点数分奇偶数,所以循环条件以&&的形式。
代码:

class Solution {
   
    public ListNode middleNode(ListNode head) {
   
        ListNode fast=head;
        ListNode slow=head;
        while(fast!=null&&fast.next!=null) {
   
            fast=fast.next.next;
            slow=slow.next;
        }
        return slow;
    }
}

然后回到234的回文链表这一题。首先按照876题的方法求得中间节点,之后将中间节点后的节点的指向改为相反方向。然后从链表两侧进行遍历比较即可。改变指向的过程分为两种情况,如果链表有奇数个节点,那么按照一般的思想实现代码即可,若链表有偶数个节点,那么最中间的两个节点的判断要进行特殊处理。

代码:

class Solution {
   
    public boolean isPalindrome(ListNode head) {
   
        if(head==null) {
   
            return true;
        }

        ListNode fast=head;
        ListNode slow=head;
        while(fast!=null&&fast.next!=null) {
   
            fast=fast.next.next;
            slow=slow.next;
        }
        
        ListNode cur=slow.next;
        
        while(cur!=null) {
   
            ListNode curNext=cur.next;
            cur.next=slow;
            slow=cur;
            cur=curNext;
        }

        fast=head;
        while(fast.val==slow.val) {
   
            if(slow==fast) {
   
                return true;
            }

            if(fast.next==slow&&fast.val==slow.val) {
   
                return true;
            }
            slow=slow.next;
            fast=fast.next;
        }


        return false;
        
    }
}

相关推荐

  1. leetcode 234

    2023-12-26 16:30:03       48 阅读
  2. 234.

    2023-12-26 16:30:03       38 阅读
  3. 234.

    2023-12-26 16:30:03       34 阅读
  4. 234.

    2023-12-26 16:30:03       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-26 16:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-26 16:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-26 16:30:03       82 阅读
  4. Python语言-面向对象

    2023-12-26 16:30:03       91 阅读

热门阅读

  1. postgres数据库安装

    2023-12-26 16:30:03       61 阅读
  2. 接口 VS 枚举,如何管理常量?

    2023-12-26 16:30:03       46 阅读
  3. 6-2 递归求阶乘和

    2023-12-26 16:30:03       64 阅读
  4. BindingData涉及的三个关键元素:数据源 路径 目标

    2023-12-26 16:30:03       53 阅读
  5. 解析新时代AI------在安全与发展之间寻求平衡

    2023-12-26 16:30:03       66 阅读
  6. PCBA贴片加工厂不良原因分析

    2023-12-26 16:30:03       68 阅读
  7. 面试算法71:按权重生成随机数

    2023-12-26 16:30:03       59 阅读
  8. oracle11体系结构二-存储结构

    2023-12-26 16:30:03       53 阅读
  9. joiner

    2023-12-26 16:30:03       63 阅读