【LeetCode每日一题】——剑指 Offer II 027.回文链表

news2024/11/27 18:00:40

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【题目进阶】
  • 八【题目注意】
  • 九【解题思路】
  • 十【时间频度】
  • 十一【代码实现】
  • 十二【提交结果】

一【题目类别】

二【题目难度】

  • 简单

三【题目编号】

  • 剑指 Offer II 027.回文链表

四【题目描述】

  • 给定一个链表的 头节点 head ,请判断其是否为回文链表。
  • 如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。

五【题目示例】

  • 示例 1:

    • 在这里插入图片描述
    • 输入: head = [1,2,3,3,2,1]
    • 输出: true
  • 示例 2:

    • 在这里插入图片描述
    • 输入: head = [1,2]
    • 输出: false

六【题目提示】

  • 链表 L L L 的长度范围为 [ 1 , 1 0 5 ] [1, 10^5] [1,105]
  • 0 < = n o d e . v a l < = 9 0 <= node.val <= 9 0<=node.val<=9

七【题目进阶】

  • 能否用 O ( n ) O(n) O(n) 时间复杂度和 O ( 1 ) O(1) O(1) 空间复杂度解决此题?

八【题目注意】

  • 本题与主站 234 题相同:https://leetcode-cn.com/problems/palindrome-linked-list/

九【解题思路】

  • 本题比较简单,直接使用快慢指针找到链表的中间位置
  • 然后将链表的前半部分入栈
  • 最后将链表的后半部分和栈中的元素比较
  • 如果比较后栈为空,说明是回文链表,否则不是
  • 最后返回结果即可

十【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为链表的长度
  • 空间复杂度: O ( n ) O(n) O(n) n n n为链表的长度

十一【代码实现】

  1. Java语言版
class Solution {
    public boolean isPalindrome(ListNode head) {
        ListNode slow = head;
        ListNode fast = head;
        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;
        }
        Stack<ListNode> stack = new Stack<>();
        while(head != slow){
            stack.push(head);
            head = head.next;
        }
        if(fast != null){
            slow = slow.next;
        }
        while(slow != null){
            if(!stack.isEmpty() && stack.peek().val == slow.val){
                stack.pop();
            }
            slow = slow.next;
        }
        return stack.isEmpty();
    }
}
  1. C语言版
bool isPalindrome(struct ListNode* head)
{
    struct ListNode* slow = head;
    struct ListNode* fast = head;
    while(fast != NULL && fast->next != NULL)
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    struct ListNode** stack = (struct ListNode**)malloc(sizeof(struct ListNode*) * 50000);
    int top = -1;
    while(head != slow)
    {
        stack[++top] = head;
        head = head->next;
    }
    if(fast != NULL)
    {
        slow = slow->next;
    }
    while(slow != NULL)
    {
        if(top != -1 && stack[top]->val == slow->val)
        {
            top--;
        }
        slow = slow->next;
    }
    free(stack);
    return top == -1;
}
  1. Python语言版
class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        slow = head
        fast = head
        while fast != None and fast.next != None:
            slow = slow.next
            fast = fast.next.next
        stack = []
        while head != slow:
            stack.append(head)
            head = head.next
        if fast != None:
            slow = slow.next
        while slow != None:
            if len(stack) != 0 and stack[-1].val == slow.val:
                stack.pop()
            slow = slow.next
        return len(stack) == 0
  1. C++语言版
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        ListNode* slow = head;
        ListNode* fast = head;
        while(fast != nullptr && fast->next != nullptr){
            slow = slow->next;
            fast = fast->next->next;
        }
        stack<ListNode*> st;
        while(head != slow){
            st.push(head);
            head = head->next;
        }
        if(fast != nullptr){
            slow = slow->next;
        }
        while(slow != nullptr){
            if(!st.empty() && slow->val == st.top()->val){
                st.pop();
            }
            slow = slow->next;
        }
        return st.empty();
    }
};

十二【提交结果】

  1. Java语言版
    请添加图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.1flex布局

参考链接 MDN 核心组成 容器 容器指定元素item的布局方式 元素 元素自定义自身的宽度大小

高数笔记02:导数、微分、中值定理

图源&#xff1a;文心一言 本文是我学习高等数学第二、三章导数、微分、中值定理的一些笔记和心得&#xff0c;希望可以与考研路上的小伙伴一起努力上岸~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、画导图、归纳题型~&#x1f9e9;&#x1f9e9; 参考用书1&…

Tomcat修改端口号

网上的教程都比较老&#xff0c;今天用tomcat9.0记录一下 conf文件夹下server.xml文件 刚开始改了打红叉的地方&#xff0c;发现没用&#xff0c;改了上面那行

SpringBoot整合第三方 Druid、MybatisPlus、Mybatis

整合第三方技术 整合JUnit Respostory 注解&#xff1a;数据类 1、导入测试对应的starter 2、测试类使用 SpringBootTest 修饰 3、使用自动装配的形式添加要测试的对象 classes的属性 其实主要找的是SpringBootApplication中的SpringBootConfiguration这个注解。也就是配置…

【Axure高保真原型】标准金额格式输入框

今天和大家分享标准金额格式输入框的原型模板&#xff0c;在输入框里输入数字后&#xff0c;会自动将对应的数字转为标准金额格式输入&#xff0c;自动添加千分位&#xff0c;例如输入2000&#xff0c;输入内容为2,000.00。具体效果可以观看下方视频或者打开预览地址体验 【原…

三星发布新智能手表:旋转边框回归,Galaxy Watch6 系列震撼来袭

今晚&#xff0c;三星发布了最新的Galaxy Watch6系列智能手表&#xff0c;其中包括Galaxy Watch6和Watch6 Classic两款。Watch6 Classic再次引入了三星手表所独有的旋转边框特色。这两款手表提供多种尺寸和支持LTE的版本&#xff0c;同时还搭载了内置的eSIM模块&#xff0c;为用…

Cookie简介

Cookie使用场景 在接口测试过程中&#xff0c; 很多情况下&#xff0c;需要发送的请求附带cookies&#xff0c;才能返回正常的结果。所以在使用pythonrequests进行接口自动化测试也是同理&#xff0c; 需要在构造接口测试用例时加入cookie。 传递Cookie的两种方式&#xff1a…

TortoiseSVN-1.14.5.29465-x64-svn-1.14.2的安装包以及汉化包

TortoiseSVN-1.14.5.29465-x64-svn-1.14.2的安装包以及汉化包 为了存一手这个安装包 CSDN资源地址&#xff0c;0积分 https://download.csdn.net/download/lu6545311/88085035 包内内容&#xff0c;一个安装包&#xff0c;一个汉化包 如果你想在你的编辑器&#xff0c;比如v…

Span-based Named Entity Recognitionby Generating and Compressing Information

原文链接&#xff1a;https://aclanthology.org/2023.eacl-main.146.pdf EACL 2023 介绍 对于information bottleneck (IB) principle信息瓶颈原理&#xff0c;要么使用生成模型&#xff0c;要么使用信息压缩模型来提高在目标任务上的性能&#xff0c;因此作者将这两种模型进行…

SpringMVC框架搭建

SpringMVC框架搭建 快速开启SpringMVC&#x1f680;&#x1f680; 步骤 1、新建模块 2、引入相关依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version> &…

科大讯飞-旋转机械故障诊断挑战赛2023-测试【1】

引言 旋转机械故障诊断挑战赛是一项旨在提高旋转机械故障检测和识别能力的竞赛活动。旋转机械是工业生产中广泛应用的设备&#xff0c;其运行状态直接影响着生产效率和安全性。然而&#xff0c;由于各种原因&#xff0c;旋转机械可能会出现不同类型的故障&#xff0c;如轴承损坏…

玩转Python 秒懂python

解析器&#xff1a; 数据结构&#xff1a; 变量运算&#xff1a; 文件处理&#xff1a; 输入输出&#xff1a; 异常处理&#xff1a; 函数模块&#xff1a; 面向对象&#xff1a; 多线程&#xff1a; 三方库&#xff1a;

菜鸡shader:L13 渐隐渐显的UV动画

文章目录 SD部分Shader代码部分 呃呃&#xff0c;这是目前我学习庄懂AP01课程的最后一节了&#xff0c;我看了一下21集之后的内容是关于LightingMap&#xff0c;目前感觉还用不到&#xff0c;加上之前参与过一个项目里面也有用到LightingMap&#xff0c;也算了解过&#xff0c;…

多模态自监督学习 + 下游任务介绍

自监督学习 意义 经过海量无标签数据的学习后可以习得一个强大的特征提取器&#xff0c;在面对新的任务&#xff0c;尤其是医疗影像等小样本任务时,也能提取到较好的特征。 常见用途 相对位置预测:预测一张图像中随机选择的两个图像块之间的相对位置 图像修复:预测一张图像…

项目管理的最佳选择:最简单的项目管理系统

作为一名项目经理&#xff0c;你是否曾经或正面临过这些麻烦&#xff1a;你一上班就开始了解项目计划的完成情况和工作进展情况。在检查和填补工作空白的同时&#xff0c;你必须面对各种报告和清单。仅仅找到各种材料和文件就需要很多时间。不仅如此&#xff0c;我们还需要出身…

git拉取项目报错:fatal: remote error: Service not enabled

一般是git地址错误&#xff0c;如果是原本就有的项目&#xff0c;看看是不是代码库移动到其他地方了&#xff0c;这个库已经被删除了

辐射定标高精度积分球均匀光源

近一二十年&#xff0c;在环境科学、太阳物理、大气物理、气候学及气象学等研究的推动下&#xff0c;高精度太阳/大气定量光谱遥感技术发展十分迅速。空间定量光谱遥感数据的获取精度很大程度上取决于遥感仪器的定标精度。所谓遥感仪器定标&#xff0c;即指建立仪器输出电信号与…

ADS仿真低噪声放大器学习笔记

ADS仿真低噪声放大器 设计要求&#xff1a; 工作频率&#xff1a;2.4~2.5GHz ISM频段 噪声系数&#xff1a;NF < 0.7 增益&#xff1a;Gain > 15 输入驻波输出驻波&#xff1a;&#xff1c;1.5 这里重点是ADS操作流程 1. 安装晶体管的库文件 1、 下载ATF54143晶体管的…

mybatisPlus基础篇

文章目录 通用Mapper接口简单插入数据-insert简单删除数据-deleteById简单修改数据-updateById简单查询数据-selectById 通用service接口Service接口-插入数据Service接口-删除数据Service接口-修改数据Service接口-查询数据自定义接口方法自定义Mapper接口方法 通用Mapper接口…

milvus: 专为向量查询与检索设计的向量数据库

1. 什么是milvus&#xff1f; milvus docs milvus release Milvus的目标是&#xff1a;store, index, and manage massive embedding vectors generated by deep neural networks and other machine learning (ML) models. Milvus 向量数据库专为向量查询与检索设计&#xf…