回文比较
  MpDIILUd3rHo 2023年11月01日 95 0

回文比较

步骤1.找中间点

用到了查找链表中间节点-快慢指针法

  public ListNode middleNode (ListNode head){
        ListNode p1=head;
        ListNode p2=head;
        while (p2!=null&&p2.next!=null){
            p1=p1.next;
            p2=p2.next.next;
        }
        return p1;

    }

步骤2.中间点后半个链表反转

利用插入排序链表

    private ListNode reverse(ListNode o1){
           ListNode n1=null;//新链表开始为空
           while (o1!=null){//如果没有到最后一个
               ListNode o2=o1.next;//建立链表o1的下一个
               o1.next=n1;//把o1连接到o1
               n1=o1;//更新刚刚的o1变成n1
               o1=o2;//更新o2变成o1
           }
           return n1;
       }

回文比较

 public boolean isPalindrome(ListNode head){
           ListNode middle=middleNode(head);//查找中间值
           ListNode newHead=reverse(middle);//中间值变成链表的新头

           while (newHead!=null){
               if(newHead.val!=head.val){//两相比较
                   return false;
               }//相比else提升1ms
                   newHead=newHead.next;//不断更新
                   head=head.next;

           }
           return true;
       }

回文比较-升级版

思路:在寻找中间节点的时候就进行排序比较

[1,2,,2,1]

比较前边的

[2,1]

public boolean isPalindrome(ListNode head){
           ListNode p1= head;//慢
           ListNode p2= head;//快
           ListNode n1=null;
           ListNode o1=head;
           while (p2!=null&&p2.next!=null){
               p1=p1.next;
               p2=p2.next.next;

               //反转链表
               ListNode o2=o1.next;
               o1.next=n1;
               n1=o1;
               o1=o2;
           }

           if(p2!=null){
               p1=p1.next;
           }

           while (n1!=null){
                if(n1.val!=p1.val){
                    return false;
                }
                n1=n1.next;
                p1=p1.next;
           }
           return true;
       }

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jTMfQq5cr55P   2024年05月17日   42   0   0 算法与数据结构
  jTMfQq5cr55P   2024年05月17日   38   0   0 算法与数据结构
MpDIILUd3rHo