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

007、链表的回文结构

0、题目描述

链表回文结构
在这里插入图片描述

1、法1

一个复杂的问题可以拆解成几个简单的问题,找中间节点和逆置链表(翻转链表)之前都做过。
这里是引用

class PalindromeList {
public:
	//1、找中间节点
    ListNode* FindMid(ListNode* A)
    {
        if (A == nullptr || A->next == nullptr)
        {
            return A;
        }
        ListNode* fast = A;
        ListNode* slow = A;
        while (fast && fast->next)
        {
            fast = fast->next->next;
            slow = slow->next;
        }
        return slow;
    }
	//2、翻转链表
    ListNode* ReverseList(ListNode* phead)
    {
        ListNode* cur = phead;
        ListNode* newhead = nullptr;
        while (cur)
        {
            ListNode* next = cur->next;
            cur->next = newhead;
            newhead = cur;
            cur = next;
        }
        return newhead;
    }

    bool chkPalindrome(ListNode* A) 
    {   
        ListNode* mid = FindMid(A);
        ListNode* B = ReverseList(mid);
        //3、依次比对
        while (A && B)
        {
            if (A->val != B->val)
            {
                return false;
            }
            A = A->next;
            B = B->next;
        }
        return true;
    }
};

http://www.kler.cn/news/364594.html

相关文章:

  • react18中的函数组件底层渲染原理分析
  • 51单片机应用开发(进阶)---外部中断(按键+数码管显示0-F)
  • Python基于amazon/chronos-t5-base的预训练模型离线对时间系列数据的未来进行预测
  • tmux插件管理
  • 图像处理中的图像重建
  • 大模型系列——幻觉
  • 如何使用 NumPy 和 Matplotlib 进行数据可视化
  • windows C++-并发中的最佳做法(一)
  • 一文掌握Kubernates核心组件,构建智能容器管理集群
  • 业务开发常见问题-并发工具类
  • ue5实现数字滚动增长
  • 分布式日志有哪些?
  • 深入理解 Java 集合框架
  • eachers中的树形图在点击其中某个子节点时关闭其他同级子节点
  • Mac 下安装FastDFS
  • JVM的内存模型是什么,每个区域的作用是什么,以及面试题(含答案)
  • 在Java中,需要每120分钟刷新一次的`assetoken`,并且你想使用Redis作为缓存来存储和管理这个令牌
  • 微服务-CAP和AKF拆分原则
  • 大语言模型数据类型与环境安装(llama3模型)
  • 【vuejs】富文本框输入的字符串按规则解析填充表单
  • [C++进阶数据结构]红黑树(半成品)
  • oneplus3t-android_framework
  • 中间件-概念
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十二)拓展图优化库g2o(一)框架
  • 3种方法,教你用Pytest更改自动化测试用例执行顺序
  • 192×144像素是几寸照片?如何手机拍照制作