博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++-链表的回文结构
阅读量:6442 次
发布时间:2019-06-23

本文共 1650 字,大约阅读时间需要 5 分钟。

题目描述

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

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

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

考察基本的链表操作,两种方法:

1.将链表转化为数组进行处理。

2.将链表反转再进行比较。

1

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList {public:    bool chkPalindrome(ListNode* A) {        // write code here        vector
res; bool flag=true; while(A){ res.push_back(A->val); A=A->next; } for(int i=0;i

2. 要注意理解反转的操作

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList {public:    bool chkPalindrome(ListNode* A) {        // write code here        if(A==NULL)            return false;        else if(A->next==NULL)            return true;        //快慢指针找出中间节点        ListNode* quick=A;        ListNode* slow=A;        while(quick!=NULL&&quick->next!=NULL)        {            quick=quick->next->next;            slow=slow->next;        }        //反转        ListNode* p=slow->next;        ListNode* p1=p->next;               while(p!=NULL)        {            p->next=slow;            slow=p;            p=p1;            p1=p1->next;        }                 while(A!=slow)        {            if((A->val)!=(slow->val))            {                return false;            }else{                if(A->next==slow)                {                    return true;                }                A=A->next;                slow=slow->next;            }        }        return true;             }};

转载于:https://www.cnblogs.com/sichenzhao/p/9320180.html

你可能感兴趣的文章
源码安装
查看>>
android 设置LinearLayout,RelativeLayout等等layout的高和宽
查看>>
实施第7天 sql server 2008 利用 mdf 和ldf 文件还原数据库
查看>>
约瑟夫环的问题
查看>>
55博客建立了首次建立博客大家多多支持
查看>>
关于"#define new DEBUG_NEW"
查看>>
线性插值之双线性插值与三线性插值
查看>>
TCP、UDP、HTTP、SOCKET之间的区别与联系
查看>>
ios 拨打电话系统回调函数
查看>>
JAVASCRIPT对数组简单处理
查看>>
PHP实现留言板功能的思路
查看>>
apache默认虚拟主机
查看>>
0.osframe框架启动入门说明
查看>>
【gin-05】 GIN-使用jsoniter构建
查看>>
配置log4j日志热加载
查看>>
Linux文件、用户及组管理
查看>>
AI干货(一):为什么说基于机器学习的AI预测更智能?
查看>>
ios 应用之间的跳转和数据传输
查看>>
react 学习记录(三)
查看>>
hash值和hash算法
查看>>