首页 > 试题广场 >

判断一个链表是否为回文结构

[编程题]判断一个链表是否为回文结构
  • 热度指数:206615 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个链表,请判断该链表是否为回文结构。
回文是指该字符串正序逆序完全一致。
数据范围: 链表节点数 ,链表中每个节点的值满足
示例1

输入

{1}

输出

true
示例2

输入

{2,1}

输出

false

说明

2->1     
示例3

输入

{1,2,2,1}

输出

true

说明

1->2->2->1     

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
头像 牛客题解官
发表于 2022-04-22 11:34:24
精华题解 题目的主要信息: 给定一个链表的头节点,判读该链表是否为回文结构 回文结构即正序遍历与逆序遍历结果都是一样的,类似123321 空链表默认为回文结构 举一反三: 学习完本题的思路你可以解决如下题目: BM4.合并有序链表 BM5.合并k个已排序的链表 BM6.判断链表中是否有环 BM7.链表中环 展开全文
头像 有名
发表于 2021-07-16 16:25:14
精华题解 方法一 思路 因为需要判断是否为回文结构,所以要比较头尾的数据,而链表无法随机查询数据,所以可以先将链表转换成list。 具体步骤 首先初始化一个list列表; 遍历链表,将链表中的值转移至list中; 在list中通过比较头尾的值来判断链表是否为回文结构。 代码如下: import jav 展开全文
头像 数据结构和算法
发表于 2021-03-21 12:52:17
1,反转后半部分链表 这题是让判断链表是否是回文链表,所谓的回文链表就是以链表中间为中心点两边对称。我们常见的有判断一个字符串是否是回文字符串,这个比较简单,可以使用两个指针,一个最左边一个最右边,两个指针同时往中间靠,判断所指的字符是否相等。 但这题判断的是链表,因为这里是单向链表,只能从前往 展开全文
头像 小洋芋热爱NLP
发表于 2021-03-01 09:15:57
- 1、题目描述: - 2、题目链接:https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f?tpId=117&tqId=37813&rp=1&ru=%2Factivity%2Foj&qr 展开全文
头像 风中的聂鲁达
发表于 2022-02-12 17:47:38
用字符串来比较 在遍历链表的同时,分别采用头插和尾插的方法构造2个字符串,然后比较这两个字符串是否相等即可。 代码如下: /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution 展开全文
头像 执子一白
发表于 2020-12-01 17:33:44
使用栈结构将链表入栈存一遍,等于逆序链表根据回文特性 正反一样 所以再出栈循环比对即可优化点,可以只比一半 import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } 展开全文
头像 我已入魔
发表于 2021-12-16 15:29:44
双指针和链表反转 * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类 t 展开全文
头像 LifelongCode
发表于 2021-01-05 16:17:46
解法1:栈利用栈结构,从左到右遍历链表,遍历的过程中把每个节点依次压入栈中。因为栈是先进后出的,所以遍历完成后从栈顶到栈的节点值顺序会与原链表从左到右的值是顺序反过来的。那么如果一个链表是回文结构的话逆序之后值出现的顺序是一样的如果不是回文结构,顺序就肯定对不上----额外空间复杂度为O(n) 展开全文
头像 叫什么都行呀
发表于 2022-09-07 13:32:47
bool isPail(struct ListNode* head ) {     // write code here     if(he 展开全文
头像 littlemuggle
发表于 2022-04-26 22:53:43
思路:将链表倒序排序之后再与原始表比较是否相等 正确的实现代码: class Solution: def isPail(self , head: ListNode) -> bool: # write code here cur = head 展开全文
头像 森ccc
发表于 2021-03-13 21:48:33
思路:构造一个栈,第一步,从头遍历链表,把值存进栈里面(顺便引入一个i值,记录有几个数,可以用来找出第几个是中间值)。第二步,只需遍历一半栈和链表,for循环挨个对比,如果不一样则返回false,最后在循环外面返回ture!搞定! public class Solution { // pub 展开全文
头像 LaN666
发表于 2021-08-01 17:28:52
题目描述:给定一个链表,请判断该链表是否为回文结构。 例子: 123321 12321 1 11 此类的即为回文结构 方法一:线性表+双指针这个方法其实很容易想到,把题目换了,如果不是一条链表判断是否是回文结构,换成是一个数组。所以我们就可以先遍历一遍链表,然后将里面的值先存放进ArrayL 展开全文