码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言每日一题(34)链表的回文结构


    牛客网 回文链表

    题目描述

    描述

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

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

    测试样例:

    1->2->2->1
    返回:true

    思路分析

    找到链表的中间结点,将中间结点后的链表进行逆置,一个从头开始遍历到中间结点,一个从中间结点遍历到尾结点进行匹配,如果存在值不相等的就不是回文链表。

    对于存在的结点个数为奇数或偶数的情况,当找到中间结点并进行逆置时,偶数情况下则是正常情况,奇数情况下,中间结点逆置后,它的前驱结点的next值依然指向逆置后的中间结点,不影响遍历。

    1. class PalindromeList {
    2. public:
    3. struct ListNode* middleNode(struct ListNode* head) {//取中间结点
    4. struct ListNode* slow = head;
    5. struct ListNode* fast = head;
    6. while (fast && fast->next) {
    7. slow = slow->next;
    8. fast = fast->next->next;
    9. }
    10. return slow;
    11. }
    12. struct ListNode* ReverseList(struct ListNode* head ) {//逆置链表
    13. struct ListNode* pre = NULL;
    14. struct ListNode* cur = head;
    15. struct ListNode* nex = cur->next;
    16. while (cur != NULL) {
    17. cur->next = pre;
    18. pre = cur;
    19. cur = nex;
    20. nex = cur->next;
    21. }
    22. return pre;
    23. }
    24. bool chkPalindrome(ListNode* A) {//进行判断
    25. ListNode* middle=middleNode(A);
    26. ListNode* rev=ReverseList(middle);
    27. ListNode* cur=A;
    28. while(cur&&rev)
    29. {
    30. if(cur->val!=rev->val)
    31. {
    32. return false;
    33. }
    34. cur=cur->next;
    35. rev=rev->next;
    36. }
    37. return true;
    38. }
    39. };

  • 相关阅读:
    c语言写逆置数
    【C++】priority_queue&&仿函数
    如何测量监控带宽使用情况
    想要精通算法和SQL的成长之路 - 前缀和的应用
    【强化学习】08——规划与学习(采样方法|决策时规划)
    认识Vue中的路由
    通过uvm_printer的print_generic进行扩展打印
    Vue2 02 基本语法和事件绑定
    源码编译risc-v虚拟机和编译器 riscv-gnu-toolchain 和 riscv-tools 在ubuntu 22.04
    Linux Ulimit控制shell执行程序的资源
  • 原文地址:https://blog.csdn.net/wcl312/article/details/134491876
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号