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

每日一练之链表的回文结构

题目描述:

方法一:

        找到链表的中间结点。

        图片解疑:

        从中间结点开始把后面的链表反转。注:详细请看附录链接

        图片解疑:

        

        判断头结点的值和尾结点的值是否一样。

 代码实例:

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
#include <cstddef>
#include<stdio.h>
ListNode* middlenode(ListNode* head)
{
    ListNode* fast,*slow;//快慢指针
    fast=slow=head;
    while(fast && fast->next)
    {
        slow=slow->next;//slow走一步
        fast=fast->next->next;//fast走两步
    }
    return slow;//返回中间结点
}
ListNode* reverseList(ListNode* head)
{
    ListNode* n1,*n2,*n3;
    n1=NULL,n2=head,n3=head->next;
    while(n2)
    {
        n2->next=n1;
        n1=n2;
        n2=n3;
        if(n3)
        {
            n3=n3->next;
        }
    }
    return n1;
}
class PalindromeList {
public:
    bool chkPalindrome(ListNode* A) {
        //找中间结点
        ListNode* mid=middlenode(A);
        //反转链表
        ListNode* right=reverseList(mid);//返回的是尾结点
        //遍历和判断
        ListNode* left=A;
        while(right)
        {
            if(left->val != right->val)
            {
                return false;
            }
            left=left->next;
            right=right->next;
        }
        return true;
    }
};

方法二:

        创建数组把链表的val值存储进去。

        在数组中判断是否为回文结构。

代码实例: 

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
    bool chkPalindrome(ListNode* A) {
        int arr[900]={0};
        ListNode* newnode=A;
        int i=0;
        while(newnode)
        {
            arr[i++]=newnode->val;
            newnode=newnode->next;
        }
        int left=0;
        int right=i-1;
        while(left<right)
        {
            if(arr[left] != arr[right])
            {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
};

完!!

附录:每日一练之反转链表-CSDN博客

相关文章:

  • LLaMA-Factory训练DeepSeek大模型+本地部署
  • Fedora41安装MySQL8.4.4
  • java每日精进 3.11 【多租户】
  • [Lc10_hash] 总结 | 两数之和 | 字符重排 | 存在重复元素 i ii | 字母异位词分组
  • 鸿蒙app开发中实现 底部抽屉效果动效
  • 修改secure-file-priv参数-mysql5.7.26限制不允许导入或导出的解决方法
  • 阿里云操作系统控制台实战评测:提升云资源管理与监控效率
  • MobileBERT: 一种适用于资源有限设备的紧凑型任务无关BERT
  • Ubuntu系统部署.NET 8网站项目
  • 部署vue+django项目(初版)
  • C语言:6.20字符型数据练习题
  • 基于Python 3.7、使用PyTorch构建的回归定位框架的详细实现
  • 线程相关作业
  • CI/CD—Jenkins配置Maven+GitLab自动构建jar包
  • 华为DSVPN
  • Manus AI:国产AI Agent的破局与隐忧
  • MyBatis-Plus 分页查询接口返回值问题剖析
  • got表hook和inlinehook的优缺?(面试题)
  • 深度学习历程
  • 【从零开始学习计算机科学】计算机体系结构(二)指令级并行(ILP)
  • 国家卫健委:有条件的二级及以上综合医院要开设老年医学科
  • 习近平抵达莫斯科伏努科沃专机机场发表书面讲话(全文)
  • 长安汽车辟谣作为二级企业并入东风集团:将追究相关方责任
  • 这个五月,有三部纪录电影值得一看
  • 巴基斯坦军方:印度导弹袭击已造成至少3死14伤
  • 上海虹桥高铁站拦门事件反转,谁在带偏网友?