【手把手带你刷好题】69.回文链表

举报
安然无虞 发表于 2022/05/26 22:13:02 2022/05/26
【摘要】 大家好,我是安然无虞。 文章目录 每篇前言 面试题:回文链表解题思路 遇见安然遇见你,不负代码不负卿。 每篇前言...

在这里插入图片描述

大家好,我是安然无虞。

每篇前言


博客主页:安然无虞

作者认证:2021年博客新星Top2

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请铁汁批评斧正。

火爆专栏:蓝桥杯基础算法剖析
欢迎加入:比特社区
在这里插入图片描述

种一棵树最好的时间是十年前,其次是现在。
各位,共勉。

面试题:回文链表

原题链接:回文链表
题目描述:
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。
示例:
1->2->2->1
返回:true

解题思路

之所以讲解前面两题,实际上都是为这道题准备的,本题的解题步骤是:

  • 找出链表的中间位置;
  • 逆置后半段
  • 最后从头依次比较即可

在这里插入图片描述代码执行:

//回文链表
class PalindromeList {
public:
   //判断中间结点
   struct ListNode* middleNode(struct ListNode* A)
   {
       struct ListNode* slow = A, *fast = A;
       while(fast && fast->next)
       {
           slow = slow->next;
           fast = fast->next->next;
       }
     return slow;
 }
   //反转后半部分
   struct ListNode* reverseAfter(struct ListNode* mid)
   {
       struct ListNode* newHead = NULL, *cur = mid;
       while(cur)
       {
           struct ListNode* next = cur->next;
           cur->next = newHead;
           newHead = cur;
           cur = next;
       }
       return newHead;
   }
   bool chkPalindrome(ListNode* A) 
   {
       // write code here
       //先判断中间结点
       struct ListNode* mid = middleNode(A);
       //再反转后半部分
       struct ListNode* rHead = reverseAfter(mid);
       while(A && rHead)
       {
           if(A->val != rHead->val)
           {
               return false;
           }
           else
           {
               A = A->next;
               rHead = rHead->next;
           }
      }
       return true;
   }
};

   
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

完整代码:
在这里插入图片描述

遇见安然遇见你,不负代码不负卿。

码字不易,求个三连
抱拳了兄弟们。

在这里插入图片描述
在这里插入图片描述

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/123991256

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。