文章目录

  • 题目
  • 思路:
  • 代码:

题目

对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。

给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

测试样例: 1->2->2->1 返回:true

思路:

1.先将链表A拷贝到另一个新建链表B中
2.再将链表B反转(http://t.csdn.cn/X3y26)
3.将反转后的链表B和链表A进行比较,并返回

代码:

public class PalindromeList {public boolean chkPalindrome(ListNode A) {// write code hereif(A == null || A.next == null){return true;}//把原来的链表复制一份ListNode newHead = new ListNode(0);ListNode newTail = newHead;for(ListNode cur = A;cur != null;cur = cur.next){newTail.next = new ListNode(cur.val);newTail = newTail.next;}ListNode B = newHead.next;//把新链表逆置ListNode preNode = null;ListNode curNode = B;ListNode nextNode = curNode.next;while(curNode != null){nextNode = curNode.next;if(nextNode == null){B= curNode;}curNode.next = preNode;preNode = curNode;curNode = nextNode;}//比较ListNode cur1 = A;ListNode cur2 = B;while(cur1 != null && cur2 != null){if(cur1.val != cur2.val){return false;}cur1 = cur1.next;cur2 = cur2.next;}return true;}

牛客OR36 链表的回文结构相关推荐

  1. 牛客OR36 .链表的回文结构

    对于一个链表,请设计一个时间复杂度为O(n), 额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构.保证链表长度小于等于900. ...

  2. 【牛客】链表的回文结构

    ​​​​​​链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 题目: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的 ...

  3. 链表回文(牛客网:OR36 链表的回文结构)

    目录 前言 一,题目分析 1.1什么是回文 1.2题目分析 二,解题思路 情况一: 情况二: tips: 三,源码分享 前言 小伙伴们大家好啊!今天我们为大家带来一篇有关判断链表回文的文章.大家一旦想 ...

  4. 牛客 - 单链表排序

    单链表排序 **BM12** **单链表的排序** 链接 问题描述 代码 BM12 单链表的排序 链接 单链表的排序_牛客题霸_牛客网 (nowcoder.com) 问题描述 给定一个节点数为n的无序 ...

  5. 牛客网 链表结构 算法相关内容

    链表结构 单链表的节点结构  由以下结构的节点依次连接起来所形成的链叫单链表结构 Clas Node<V>{ V value; Node next; } 双链表的节点结构 由以下结构的节点 ...

  6. 【Java】牛客网 链表分割

    题目描述 : 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针. 解题思路 : 假 ...

  7. 牛客网 - 链表相加

    问题: 解题思路: 可以把节点数据提取出来存在列表里然后去算,当然,喜提时间爆表 还是老老实实在走节点的过程中就加然后建立链表 注意进位的设置,卡我十分钟的点在于q = self.reverse(q) ...

  8. 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案

    牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案 题目描述 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞 ...

  9. 牛客题霸 [两个链表生成相加链表] C++题解/答案

    牛客题霸 [两个链表生成相加链表] C++题解/答案 题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. ...

最新文章

  1. LeetCode实战:除自身以外数组的乘积
  2. 网上的假货太多,你把握不住的,让AI来
  3. 找回mysql root密码_找回MySQL的root密码
  4. 哈工大人工智能作业一_想从事人工智能行业,考研选什么专业对口?
  5. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~...
  6. 大数据体系的4个热点4个趋势,还有3个疑问
  7. mysql 驱动指令_Mysql的驱动包如何发送指令给MYSQL SERVER
  8. 浙江移动无线dns服务器地址,首选dns_浙江省宁波市(中国移动)首选dns是什么,备选dns是什么...
  9. 2019网易校招笔试题 瞌睡
  10. 烽火通信实习应聘经验
  11. 【文献阅读】机器学习中的超参数窃取Stealing Hyperparameters in Machine Learning
  12. 折弯机使用说明书_折弯机操作图解法-如何使用折弯机
  13. 国外优秀免费空间对比APPFOG VS TECHNETCAL
  14. python matplotlib三维画图、二维画图常用命令总结
  15. 代码学习之Python冒号详解
  16. 用js代码在body里面添加内容
  17. 服务器系统盘划分,服务器硬盘分区的划分c区系统区.doc
  18. Android USB Camera(1) : 调试记录
  19. 渐变的alert_模仿新浪邮箱的alert渐变的提示框
  20. unsigned long long 与 long long

热门文章

  1. 微信隐藏功能系列:微信转账延迟到账怎么设置?担心转错?2步解决
  2. SQL server数据库安装包下载
  3. Visio画图几个技巧
  4. 基于Markdown 搭建自己的博客,哪个工具好?
  5. python读取word文件并替换部分文字_python批量替换
  6. python数字水印嵌入与提取_基于LSB的图像数字水印实验
  7. Yolov5 更改识别窗口大小
  8. android RemoteViews解析
  9. Linux内核中的IPSEC实现(3) ---转载
  10. windows程序和控制台程序