234-回文链表

【单链表】回文链表 【题】 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head = [1,2,2,1] 输出:true 示例 2: 输入:head = [1,2] 输出:false 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 【分析】 思路1:暴力解决,遍历链表后将数存储在数组中,然后根据数据是否对称去判断,此方法要借助额外数据结构存储数据 思路2:利用快慢指针找到中间节点,再将后半部分链表 阅读详情

题目

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:head = [1,2,2,1]
输出:true
示例 2:

输入:head = [1,2]
输出:false

题解一 数组

var isPalindrome = function(head) {
    const vals = [];
    while (head !== null) {
        vals.push(head.val);
        head = head.next;
    }
    for (let i = 0, j = vals.length - 1; i < j; ++i, --j) {//循环条件
        if (vals[i] !== vals[j]) {
            return false;
        }
    }
    return true;
};

笔记:

  1. 将链表的值压入数组,循环计算

题解二 反转

var reverseList = function (head) {
  if (head == null || head.next == null) {
    return head;
  }
  let cur = reverseList(head.next);//传入head的next
  head.next.next = head;
  head.next = null;
  return cur;
};
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var isPalindrome = function (head) {
  // 如果是空链表或者是只有一个节点的链表  则自然是回文链表
  if (!head || !head.next) {
    return true;
  }
  let fast = head,
    slow = head;
  while (fast && fast.next) {
    slow = slow.next;
    fast = fast.next.next;
  }
  // 如果是奇数情况下,保证slow指向的是后半段起始节点
  if (fast != null) {
    slow = slow.next;
  }
  let left = head,
    right = reverseList(slow);
  while (right) {
    if (left.val != right.val) {
      return false;
    }
    left = left.next;
    right = right.next;
  }
  return true;
};

笔记:

  1. 反转后半部分链表 进行对比
【力扣题解 Day 17】234. 回文链表 力扣算法打卡记录 阅读详情

相关推荐

234. 回文链表

234. 回文链表 我胡汉三又回来了,时隔一年零三个月,清晰记得去年七月份毕业入职人生第一份正式工作,凭借刷算法,刷基础,以及刷面经,在当时还算找到一份满意的工作。因为部分原因,希望换个工作环境,呼吸新鲜空气。所以重拾算法,重拾基础,重拾面经,所以2021新年伊始,可以得到一份让自己满意的工作,与君共勉!!!其实已经回归两个星期了,只是之前忙着刷题,没有写博客记录,工作后,越来越发现,好记性不如烂笔头,所以再次写博客,并且希望自己能坚持把刷题记录,以及基础准备都梳理出来。 1. 题目 题目链接 2..

凌凌小博客 922

回文链表(详解)

LeetCode HOT 100回文链表 想完全理解这道题还请先转入反转单链表【图文详解】掌握反转链表的思想 问题描述: 给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。 思路方法解读: 当我们遇到回文问题会想到,在数组里面我们可以用两个指针一个从头一个从尾开始遍历到中间,进行比较,那对于链表的操作是复杂的,我们可不可以将链表的值复制在数组里,对数组进行操作?答案是可以的。我们可以将链表的值复制到新申请的数组当中,利用双...

oorik的博客 6871

Leetcode——234,回文链表

也是一个快慢指针的应用: /** * \* Created: liuhuichao * \* Date: 2019/8/6 * \* Time: 35:18 AM * \* Description: 回文链表 * \ * 请判断一个链表是否为回文链表。 * <p> * 示例 1: * <p> * 输入: 1->2 * 输出: false * 示...

我们的征途是星辰大海 388

24、链表-回文链表

回文链表,反正链表,快慢指针,双指针

qq_29434541的博客 731

[Pytorch案例实践001]手写MNIST数字识别

Pytorch实现手写数字识别,带完整数据集。

2403_83044722的博客 1117

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 262

回文链表的四种方法

怎么样?通过四种解法解一道简答题,但是其中的方法是值得人去思考理解的,比如:双指针思想以及熟练运用涉及到相关的数据结构,还有就是反转链表的这个高频面试考点。这样发现下来,向高效完美的解决回文链表这道题,那你就选用方法三或者是方法四吧,如果你不考虑时间和空间的损耗,那就直接采用方法一,嘎嘎马上解决。

weixin_63549044的博客 515

Python小白避坑指南:用Ursina做3D图形,Entity的scale和color参数到底怎么调才不出错?

本文详细解析了Python Ursina引擎中Entity对象的scale和color参数调优技巧,帮助3D图形编程初学者避开常见陷阱。通过对比实验和典型场景分析,深入讲解三种缩放方式的区别、颜色定义的四种方法,以及参数组合的协同效应,助力开发者精准控制3D图形表现。

weixin_26782929的博客 413

【8.10】链表-回文链表

给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。

攻城狮7号的博客 895

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

20220601超简单百度地图街景图片爬取+绿视率计算

真的不难咯。

weixin_39676904的博客 1万+

Leetcode 234. 回文链表

Leetcode 234. 回文链表 1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/palindrome-linked-list/   可以使用数组解决该问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "a

珍惜 8766

AUTOSAR OS详细介绍及配置说明(更新版20240115)

AUTOSAR OS扩展了OSEK/VDX标准中的操作系统,所以本文结合OSEK/VDX的标准来介绍AUTOSAR OS,并借助Vector Configurator讲解AUTOSAR OS的配置。源于德语,英文意思是:“车载电子设备的开发系统和接口”,它是一个标准,用来产生嵌入式操作系统的规范,通讯协议栈,和汽车网络管理协议,也产生其他相关的规范。OSEK被设计来提供整车的各种电子控制单元的软件标准架构。

酒无忧的博客 1422

leetcode 234.回文链表

leetcode 234.回文链表 题目描述 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 解题思路 方法1: 借助额外的空间复杂度,使用栈的方法。 具体方法是,先压榨,这样的话,栈顶的元素就是链表的尾...

EngineerHe的博客 1510

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 423

数字电视中的 Closed Caption (CC) 字幕标准协议

本文将详细介绍 DVB中的 CC 字幕标准协议,包括数据结构格式、字段定义、字段占用比特数以及字段用途。此外,本文还将举例说明如何从 TS 传输流中解析 CC 字幕信息,并组织打包到电视节目中进行显示。

以实战经验介绍行业知识 670

234.回文链表

本题可采用快慢指针结合链表反转的模式来解决。快慢指针用于找到链表的中间节点,然后反转后半部分链表,最后比较前半部分和反转后的后半部分链表是否相同。,判断该链表是否为回文链表。给你一个单链表的头节点。

qq_40844444的博客 1056

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode 234回文链表

LeetCode 234回文链表 题目简述:请判断一个链表是否为回文链表。 输入:1->2->2->1 输出:true 输入:1->2 输出:false 思路一:利用数组存链表节点值,再利用双指针遍历比对前后数值是否相同 时间复杂度O(n),空间复杂度O(n) class Solution { public: bool isPalindrome(ListNode* head) { vector<int> vl;

XBlog 137

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

回文链表力扣234

emplace_back` 和 `push_back` 都是 C++ 中 `std::vector` 的成员函数,用于向容器尾部添加元素,但它们在实现方式和性能上有显著区别:1. 参数传递方式接受一个已构造好的对象(拷贝或移动),然后将该对象添加到 `vector` 末尾。// 拷贝构造// 移动构造(如果 Foo 支持移动语义)

2301_81834780的博客 646

[Leetcode] 234. 回文链表

题目: 解法一: 还是跟上道题差不多,可以使用数组(可变数组),把链表的节点的值存入数组,然后使用双指针判断,一个从左到中间,另一个从右到中间。 public static boolean isPalindrome(ListNode head) { ArrayList<Integer> list = new ArrayList<>(); // 把链表的值复制到数组中 ListNode cur = head; w

flunggg的博客 282

LeetCode 234. 回文链表 | C语言版

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

weixin_45992021的博客 665

力扣 234 回文链表

快慢指针 找中点(注意奇偶) 分开 反转后半链 比较(以后半链为主) class Solution { public: bool isPalindrome(ListNode* head) { ListNode *p=new ListNode(-1);//预先指针 ListNode *fast=p; ListNode *low=p; ...

qq_40519283的博客 377

力扣 234. 回文链表

​ 本文仅仅简单讲解了《234. 回文链表》这一题目,对链表和数组结合应用有了一定的掌握 ​

m0_51787573的博客 649

Leetcode 234、回文链表

Leetcode 234、回文链表

hljjaaa的博客 161
上一篇: 226-翻转二叉树
下一篇: 236-二叉树的最近公共祖先
codrab
博客等级 码龄10年 15粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codrab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值