当前位置: 首页 > news >正文

复杂度——链表的回文结构

首先我们先来看一下这个题目的限制条件,它规定了时间复杂度与空间复杂度,这就证明,我们的链表只能够遍历一遍,所以就不能够应用将链表后方的重复部分存储到数组内再进行比较的方法了。所以根据我们之前做过的单链表中的题目我们可以想到这个方法:我们可以先应用快慢指针找到单链表的中间节点,再将后面的节点全部逆置,再比较前面部分与后面部分的节点数据是否相同,如果相同则返回true,如果不同则返回false。那么我们现在来实现一下这个方法。

typedef struct ListNode ListNode;
class PalindromeList 
{
public:
ListNode* FindMid(ListNode*A)
{ListNode*slow=A;ListNode*fast=A;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}
ListNode*reverse(ListNode*A)
{ListNode*pcur=A;ListNode*newhead=NULL;while(pcur){ListNode*next=pcur->next;pcur->next=newhead;newhead=pcur;pcur=next;}return newhead;
}bool chkPalindrome(ListNode* A) {// write code hereListNode*mid=FindMid(A);ListNode*rmid=reverse(mid);while(rmid&&A){if(rmid->val!=A->val){return false;}rmid=rmid->next;A=A->next;}return true;}
};

大家感兴趣的可以自行尝试一下哦~

页面找不到了_牛客网


http://www.mrgr.cn/news/13459.html

相关文章:

  • springboot配置两个MongoDB
  • go 开发小技巧
  • 论文速递 | Operations Research 7月文章合集
  • 开发新系统时,数据库字符集怎么选择对中文的支持最好?
  • 浏览器多开,让WhatsApp多账号管理更高效
  • kotlin协程之 协程概念的具像化
  • 使用推测解码提高 LLM 推理速度
  • 47-java节点流和处理流
  • 利用Python对Excel数据进行条件筛选与排序
  • EmguCV学习笔记 VB.Net 6.4 霍夫变换
  • 第3章 ECMAScript 7 新特性
  • 【习题】ArkUI进阶
  • 算法设计:实验二贪心算法
  • SQL的瑞士军刀:COALESCE与NULLIF的巧用
  • PHP教育培训企业小程序多端平台系统源码
  • Objective-C 中的管道艺术:NSPipe 通信全解析
  • 计算机的错误计算(七十六)
  • HikariPool-1 - Exception during pool initialization报错解决
  • 为什么需要对即将上线的系统进行压力测试
  • 常见的算法底层思想