Nowcoder. 链表的回文结构
文章目录
- 回文数
- 代码实现
回文数
代码实现
回文数是指一个像16961这样"对称"的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。 了解回文数 自然就能更好地理解回文链表
核心思路:
先找到中间节点
然后从中间节点开始 ,对后半段逆置
最后前半段和后半段进行比较 (从链表的头节点和逆转后返回的节点分别开始遍历判断)
如果相等就是回文结构 如果不相等 就不是回文结构
如果是奇数 ,节点就是中间
如果有两个中间结点,则返回第二个中间结点(偶数的情况)
需要注意一个细节 : 此时节点 2的next依然保存的是原链表节点 3的地址
class PalindromeList {public:
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* cur = head;int size = 1;//得到链表元素个数while (cur->next != NULL){size++;cur = cur->next;}//第二次遍历 得到中间节点cur = head;int k = 0;size /= 2; //5/2 =2 while (k < size){k++;cur = cur->next;}return cur;}
// 反转链表函数
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* cur = head;struct ListNode* newhead = NULL;if (head == NULL) //空链表{return NULL;}// 不是空链表 while (cur){struct ListNode* next = cur->next; //保存下一个节点的地址//头插cur->next = newhead;newhead = cur;cur = next;}return newhead;}
bool chkPalindrome(struct ListNode* head) //判断回文链表
{// 找中间节点struct ListNode* mid = middleNode(head);// 从中间节点开始反转链表struct ListNode* rhead = reverseList(mid);// 判断while (head && rhead){if (head->val != rhead->val){return false;}rhead = rhead->next;head = head->next;}return true;
}
};
如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!
Nowcoder. 链表的回文结构相关推荐
- 链表的回文结构@Nowcoder—— 单链表
小题解 1. 题目 2. 思路及小注意 3. 题解 1. 题目 题目链接:链表的回文结构 2. 思路及小注意 这道题目整合了之前几道题目,返回链表中间节点,反转单链表.需要比较熟悉. 判断是否为回文链 ...
- 【牛客】链表的回文结构
链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 题目: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的 ...
- C语言习题——链表的回文结构
如果是数组的话,直接找到中间下标,然后用两个指针,一个指向首元素,另一个指向最后一个元素,然后同时向中间走就能判断,但对于单链表来说,找到中间的结点是不能用下标访问的,所以采用快慢指针法,即慢指针一次 ...
- [数据结构]题海啊,全是水(三)链表中倒数第k个节点、链表的回文结构、链表分割
这是一个目录 链表中倒数第k个节点 解法一 解法二 链表的回文结构 思路 代码 链表分割 思路 代码 最后 菜鸡大学生的数据结构--刷题篇3 我们的第三题小宝贝儿回归了! 菜鸡大学生明白,笔试oj题目 ...
- JAVA链表习题---回文结构(详细图解)
回文结构 前言 什么是回文结构? 题目描述 思路分析 完整代码 前言 什么是回文结构? 回文结构:结构相同.方向相反的序列. 通俗讲,指一个顺着读和反过来读都一样的字符串. 特点:对称 题目描述 对于 ...
- 链表回文(牛客网:OR36 链表的回文结构)
目录 前言 一,题目分析 1.1什么是回文 1.2题目分析 二,解题思路 情况一: 情况二: tips: 三,源码分享 前言 小伙伴们大家好啊!今天我们为大家带来一篇有关判断链表回文的文章.大家一旦想 ...
- 链表的回文结构(算法笔记)
单链表的换头问题 如果涉及到单链表的相关算法题中涉及到换头操作,方法需要返回值 简单问题一 打印两个有序链表的公共部分 问题二 判断一个链表是否为回文结构 [题目]给定一个单链表的头节点head,请判 ...
- LeetCode 链表的回文结构
链表的回文结构 题目描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构.保证 ...
- 【Java】 链表的回文结构
题目 : 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构.保证链表长度小于等于 ...
最新文章
- 根据网络状态获取Ip地址
- javascript闭包产生的内存泄漏
- [html] 前端需要注意哪些SEO?
- gitlab访问错误Whoops, GitLab is taking too much time to respond
- BackBone及其实例探究
- 一页纸项目管理及模板下载
- Guass_seidel迭代法
- c++ 获取外网ip地址
- 《缠中说禅108课》44:小级别背驰引发大级别转折
- 安卓权限工具类(二)
- 历届试题 合根植物 C语言,植物营养历年真题(整理).doc
- ceph管理界面calamari(未成功)
- 介绍一下xgb_XGB羽毛球app
- 人生25句最美丽的名句
- EasyExcel为单个Cell设置样式
- 常用的第三方模块-Pillow
- ThinkPhp5.0.24 JWT报错 ‘“kid“ empty, unable to lookup correct key‘解决办法
- Acoustics | 声音时间检测:日常声音理解
- 安全的企业邮箱如何选择
- 万物互联大数据研究正式展开人才紧缺