首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
判断一个链表是否为回文结构
[编程题]判断一个链表是否为回文结构
热度指数:230075
时间限制: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,
点此查看相关信息
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(6)
邀请回答
收藏(697)
分享
提交结果有问题?
388个回答
494篇题解
开通博客
牛客题解官
发表于 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
展开全文
问题信息
链表
双指针
难度:
388条回答
697收藏
12078浏览
热门推荐
通过挑战的用户
查看代码
洞洞鞋小公主
2023-03-13 10:58:26
牛客20133...
2023-03-12 12:59:31
成熟的肖恩在创作
2023-03-01 16:03:58
K乀
2023-02-25 17:20:23
少糖加蛋娃哈哈
2023-02-24 16:34:26
相关试题
神奇的数字
排序
双指针
评论
(46)
和为S的两个数字
数组
数学
双指针
评论
(1513)
来自
“一战通offer”互联...
最小面积子矩阵
动态规划
双指针
前缀和
评论
(46)
在大语言模型中,什么是"Gated...
大模型开发
评论
(1)
关于大模型“上下文窗口”的理解,以...
大模型概念
评论
(1)
判断一个链表是否为回文结构
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ public boolean isPail (ListNode head) { // write code here } }
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ bool isPail(ListNode* head) { // write code here } };
#coding:utf-8 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head # @return bool布尔型 # class Solution: def isPail(self , head ): # write code here
using System; using System.Collections.Generic; /* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } } */ class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ public bool isPail (ListNode head) { // write code here } }
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ function isPail( head ) { // write code here } module.exports = { isPail : isPail };
val = $x; } }*/ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ function isPail( $head ) { // write code here }
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head # @return bool布尔型 # class Solution: def isPail(self , head: ListNode) -> bool: # write code here
package main import "fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ func isPail( head *ListNode ) bool { // write code here }
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ bool isPail(struct ListNode* head ) { // write code here }
# class ListNode # attr_accessor :val, :next # # def initialize(val = 0, _next = nil) # @val, @next = val, _next # end # end # # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head # @return bool布尔型 # class Solution def isPail(head) # write code here end end
/** * class ListNode(var val: Int) { * var next: ListNode = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ def isPail(head: ListNode): Boolean = { // write code here } }
/** * class ListNode(var `val`: Int) { * var next: ListNode? = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ fun isPail(head: ListNode?): Boolean { // write code here } }
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ public boolean isPail (ListNode head) { // write code here } }
/*class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ export function isPail(head: ListNode): boolean { // write code here }
/** * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int = 0, _ next: ListNode? = nil) { * self.val = val * self.next = next * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ func isPail ( _ head: ListNode?) -> Bool { // write code here } }
/** * #[derive(PartialEq, Eq, Debug, Clone)] * pub struct ListNode { * pub val: i32, * pub next: Option
> * } * * impl ListNode { * #[inline] * fn new(val: i32) -> Self { * ListNode { * val: val, * next: None, * } * } * } */ struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head * @return bool布尔型 */ pub fn isPail(&self, head: Option
>) -> bool { // write code here } }
{1}
true
{2,1}
false
{1,2,2,1}
true