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

判断一个单链表是否是回文结构 要求O(N)时间复杂度 O(1)空间复杂度

没做出来 看了解析 但是思路想到了 就是只能调整链表顺序,正确答案是 把链表变成两条单链表,分别从两侧走向中间拿两个指针 分别指向两头 ,往中间走 中途有不一样的就返回false,

private static  boolean  handle(Node head){int size = size(head);Node[] reserve = reserve(head, size / 2);Node left = reserve[0];Node right = reserve[1];while(left!=null&&right!=null){Integer leftvalue=left.getValue();Integer rightValue=right.getValue();if(leftvalue!=rightValue){return false;}left=left.next;right=right.next;}return true;}

其中一个方法是反转链表

private static Node[] reserve(Node head,int start){Node[] result=new Node[2];Node pre=null;Node current=head;int count=0;while(current!=null){if(count>start) {Node next = current.next;current.next = pre;pre = current;current = next;continue;}current=current.next;count++;}result[0]=pre;result[1]=head;return result;}

获取链表长度 方便到时候确定从哪里开始反转

private static int size(Node head){Node current=head;int count=0;while(current!=null){count++;current=current.next;}return count;}

结束

http://www.lryc.cn/news/514663.html

相关文章:

  • Kafka 快速实战及基本原理详解解析-01
  • wujie无界微前端框架初使用
  • C++ 设计模式:职责链模式(Chain of Responsibility)
  • Yocto项目 - 详解PACKAGECONFIG机制
  • Linux下部署ElasticSearch集群
  • 超高分辨率 图像 分割处理
  • 【含文档+PPT+源码】基于springboot的农贸菜市场租位管理系统的设计与实现
  • 信息科技伦理与道德1:绪论
  • Linux实验报告15-添加系统调用
  • logback之配置文件使用详解
  • 壁纸样机神器,这个工具适合专业设计师用吗?
  • MySQL秘籍之索引与查询优化实战指南
  • 【AI日记】25.01.03 kaggle 比赛 3-2 未来的命运
  • Linux(Centos 7.6)命令详解:ls
  • 【Unity3D】UGUI Canvas画布渲染流程
  • minikube安装k8s
  • Docker图形化界面工具Portainer最佳实践
  • 借助 FinClip 跨端技术探索鸿蒙原生应用开发之旅
  • 【网络】ARP表、MAC表、路由表
  • Linux驱动开发学习准备(Linux内核源码添加到工程-Workspace)
  • 25.1.3
  • Leecode刷题C语言之我的日程安排表②
  • 十二、Vue 路由
  • smell---Paddle-DI
  • PCL点云库入门——PCL库点云特征之点云法向量(NormalEstimation)及其可视化
  • 25.Java JUC 引入(进程与线程、线程的状态、并发与并行、管程、用户线程与守护线程)
  • Linux 异步 I/O 框架 io_uring:基本原理、程序示例与性能压测
  • Uniapp中使用`wxml-to-canvas`开发DOM生成图片功能
  • Linux之ARM(MX6U)裸机篇----5.仿stm32的LED驱动实验
  • DVWA靶场Open HTTP Redirect (重定向) 漏洞所有级别通关教程及源码审计