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

数据结构-链表OJ-回文链表,如何将时间复杂度控制为O(N),空间复杂度控制为O(1)?

链表的回文结构

  • 前言
  • 回文链表


前言

本篇讲解链表的回文结构

回文链表

题目链接:https://leetcode.cn/problems/palindrome-linked-list/description/
在这里插入图片描述
我们仅讲解能够将时间复杂度控制为O(n) 并且将空间复杂度控制为 O(1)的思路

首先,题目要求我们判断是否为回文结构,那么我们可以和之前一样,以中间结点为切入点

我们采用快慢指针法,找到中间结点(当快指针为空或快指针的下一个结点为空时,慢指针刚好走到中间结点,如果有偶数个结点,那么记慢指针走到第三个结点为中间结点),之后对中间结点开始及之后的结点进行逆置,中间结点的前一个结点next置为空,逆置完成后,一个从新的头结点开始,另一个从头结点开始(中间结点之前的原头结点)开始进行比较,直到一方为空

实现代码如下:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
bool isPalindrome(struct ListNode* head) {struct ListNode* slow = head;struct ListNode* fast = head;struct ListNode* prev = slow;while(fast && fast->next){prev = slow;slow = slow->next;fast = fast->next->next;}prev->next = NULL;struct ListNode* mid = slow;struct ListNode* prev1 = NULL;struct ListNode* next1 = mid;struct ListNode* cur = NULL;while(next1){if(prev1 == NULL){cur = prev1 = next1;next1 = next1->next;prev1->next = NULL;}else{cur = next1;next1 = next1->next;cur->next = prev1;prev1 = cur;}}struct ListNode* newhead = head;while(newhead){if(newhead->val != cur->val){return false;}newhead = newhead->next;cur = cur->next;}return true;
}

以上为此篇全部内容!

相关文章:

  • 增加Label Verified
  • Mac M4 芯片运行大模型指南,包括模型微调与推理
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (三)
  • <6>-MySQL表的增删查改
  • PostgreSQL 安装与配置全指南(适用于 Windows、macOS 与主流 Linux 发行版)
  • 【Elasticsearch】Elasticsearch 近实时高速查询原理
  • Android高性能音频与图形开发:OpenSL ES与OpenGL ES最佳实践
  • 如何判断对象是否存活
  • DevSecOps实践:CI/CD流水线集成SAST工具的完整指南
  • 从零开始搭建现代化 Monorepo 开发模板:TypeScript + Rollup + Jest + 持续集成完整指南
  • python/java环境配置
  • 张彬彬《龙骨焚箱》开机 奇幻冒险题材引期待
  • 期末考试复习总结-《从简单的页面开始(下)》
  • 亚马逊运营:物流成本优化——如何在开发阶段做好物流成本优化
  • 【多智能体】受木偶戏启发实现多智能体协作编排
  • 论文笔记:LANGUAGE MODELS REPRESENT SPACE AND TIME
  • 初阶数据结构习题【16】(5二叉树)——101. 对称二叉树
  • IDEA中配置HTML和Thymeleaf热部署的步骤
  • Springboot度假村住宿服务平台95i1e(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 从“分散开发”到“智能协同” —— Gitee 如何赋能河南农担构建金融级研发体系?
  • wap网站为什么没有了/网站点击量与排名
  • 宁夏网站建设联系电话/什么是seo搜索优化
  • 手机做网站用什么软件/网络seo关键词优化技术
  • 深圳快速网站制/模板建站教程
  • wordpress 文章锚点/手机一键优化
  • 购书网站开发/哪里有学电脑培训班