C++速通LeetCode简单第5题-回文链表

news2024/11/14 14:58:26

 

 解法1,堆栈O(n)简单法:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        stack<int> s;
        ListNode* cp = head;
        bool flag = true;
        while(cp!=nullptr)
        {
            s.push(cp->val);
            cp = cp->next;
        }
        while(head!=nullptr)
        {
            if(s.top()!=head->val)
            {
                return false;
            }
            else
            {
                s.pop();
                head = head->next;
            }
        }
        return true;
    }
};

解法2, 快慢指针确定中间节点并向后逆序O(1):

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    //找到开始逆序的中间节点slow
    ListNode* MiddleNode(ListNode* ori)
    {
        ListNode* countTest = ori;
        ListNode* middleStart = nullptr;
        while(countTest!=nullptr)
        {
            countTest = countTest->next;
        }
        ListNode* fast = ori;
        ListNode* slow = ori;
        
        //奇数偶数一样
        while(fast != nullptr && fast->next!= nullptr)
        {
            fast = fast->next->next;
            slow = slow->next;
        }
        middleStart = slow;
        return middleStart;
    }

    //从slow的中间节点开始逆序,返回逆序后半序列的头节点
    ListNode* ReverseNode(ListNode* start)
    {
        ListNode* pre = nullptr;
        ListNode* cur = start;

        while(cur != nullptr)
        {
            ListNode* temp = cur->next;
            cur->next = pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }

    bool isPalindrome(ListNode* head) {
        ListNode* rev = ReverseNode(MiddleNode(head));
        while(rev!=nullptr)
        {
            if(rev->val!=head->val)
            {
                return false;
            }
            else
            {
            head = head->next;
            rev = rev->next;
            }
        }
        return true;
    }
};

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

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

相关文章

一款屏幕录制和视频剪辑软件Camtasia 2024

Camtasia 2024是一款屏幕录制和视频剪辑软件&#xff0c;软件提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场、视频播放功能、视屏白板等功能&#xff0c;支持在任何颜色模式下轻松地记录屏幕动作&#xff0c;有需要的朋友快来下载吧&#xff01; Camtasia 2…

1.pytest基础知识(默认的测试用例的规则以及基础应用)

一、pytest单元测试框架 1&#xff09;什么是单元测试框架 单元测试是指再软件开发当中&#xff0c;针对软件的最小单位&#xff08;函数&#xff0c;方法&#xff09;进行正确性的检查测试。 2&#xff09;单元测试框架 java&#xff1a;junit和testing python&#xff1a;un…

电脑怎么禁用软件?5个方法速成,小白必入!

电脑禁用软件的方法多种多样&#xff0c;以下是五种简单易行的方法. 适合不同需求的用户&#xff0c;特别是电脑小白。 1. 使用任务管理器禁用启动项 操作步骤&#xff1a;按下“Ctrl Shift Esc”组合键&#xff0c;打开任务管理器。 切换到“启动”选项卡&#xff0c;找到…

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【活动预告】平陆县2024年“我有拿手戏”群众文艺大展演

庆祝中华人民共和国成立75周年 7天10场演出3场展览 文化给您精彩 “礼赞新中国逐梦新时代” 【活动预告】 平陆县“庆祝中华人民共和国成立75周年”文艺晚会暨“我有拿手戏”群众文艺大展演 7天10场演出3场展览给您精彩 01 平陆县2024年“庆祝中华人民共和国成立75周年”…

小阿轩yx-案例:Prometheus监控kubernetes环境构建

小阿轩yx-案例&#xff1a;Prometheus监控kubernetes环境构建 前言 传统架构中比较流行的监控工具有 Zabbix、Nagios 等&#xff0c;这些监控工具对于 Kubernetes 这类云平台的监控不是很友好&#xff0c;特别是当 Kubernetes 集群中有了成千上万的容器后更是如此 基于 kube…

662. 二叉树最大宽度 BFS 力扣

662. 二叉树最大宽度 已解答 中等 相关标签 相关企业 给你一棵二叉树的根节点 root &#xff0c;返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点&#xff08;即&#xff0c;两个端点&#xff09;之间的长…

【工具变量】数字乡村试点区县DID(2000-2023)

数据简介&#xff1a;数字乡村试点政策是中国政府为了推动乡村数字化转型、促进乡村振兴而实施的一项重要战略。根据2020年7月18日中国政府网发布的《关于开展国家数字乡村试点工作的通知》&#xff0c;试点工作的目标是到2021年底&#xff0c;试点地区数字乡村建设取得明显成效…

自动泊车系统中的YOLOv8 pose关键点车位线检测

自动泊车系统中的YOLOv8关键点车位线检测技术解析 引言 随着智能驾驶技术的快速发展&#xff0c;自动泊车功能成为了现代汽车的重要组成部分。它不仅能够提高驾驶的安全性&#xff0c;还能在一定程度上解决城市停车难的问题。在自动泊车系统中&#xff0c;准确识别停车位的位置…

微信 SDK、NCF 、CO2NET、Senparc.AI 近期重大更新,欢迎解锁

◾️更新基础库&#xff0c;包括缓存、APM、CO2NET 核心模块等全面升级&#xff1b; ◾️更新支付接口调用过程中的 SM&#xff08;国密&#xff09;和 RSA 判断方式&#xff1b; ◾️更新微信 SDK 接口 Senparc.Weixin SDK ✍️v2024.9.10 更新基础库&#xff0c;包括缓…

解决nginx代理SSE接口的响应没有流式返回

目录 现象原来的nginx配置解决 现象 前后端分离的项目&#xff0c;前端访问被nginx反向代理的后端SSE接口&#xff0c;预期是流式返回&#xff0c;但经常是很久不响应&#xff0c;一响应全部结果一下子都返回了。查看后端项目的日志&#xff0c;响应其实是流式产生的。推测是n…

Python 课程16-OpenCV

前言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个广泛使用的开源计算机视觉库&#xff0c;旨在为实时图像处理提供高效的计算工具。它提供了数百种算法和函数&#xff0c;用于处理图像和视频。OpenCV 在工业、学术研究和个人项目中应用广泛&…

鸿蒙开发之ArkUI 界面篇 十二 背景属性

backgroundColor背景色(纯颜色&#xff0c;没法实现立体感之类高级效果)、 backgroundImage背景图(一般是设计师设计好的图)、 backgroundImageSize背景图尺寸(用于调整背景图的尺寸)、 backgroundImagePosition背景图位置(用于调整背景图的位置)。 背景图的添加是属性backgrou…

在家找不到手机?除了语音助手,还可以用远程控制!

总说手机有定位功能&#xff0c;但手机定位一般只能用于室外较大范围&#xff0c;例如在某个街角交叉位置、某个公园位置&#xff0c;某幢楼的某层位置。如果是在室内&#xff0c;例如自己家&#xff0c;手机定位就显得没那么好用了。 在家里怎么找突然“失踪”的手机&#xff…

Android RecycleView 深度解析与面试题梳理

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 引言 在 Android 开发中&#xff0c;列表和网格布局是非常常见的界面元素&#xff0c;它们用于展示大量数据集合。RecyclerView 是 Android 提…

Leetcode 470. 用 Rand7() 实现 Rand10()

Leetcode 470. 用 Rand7() 实现 Rand10() 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数&#xff0c;试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 示例 1: 输入: 1 输出: [7] 示例 2: 输入: 2 输出: [8,4] 示例 3…

OTA升级

方式1: 方式2: 服务器与mcu通讯机制

LeetCode[简单] 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 思路&#xff1a;类似与二分查找 唯一需要注意的是&#xff0c;搜索…

vulnhub靶机:Fristileaks 详细过程

下载 下载地址&#xff1a;https://www.vulnhub.com/entry/fristileaks-13,133/ 修改网卡 网卡设置为nat模式&#xff0c;并修改mac地址为 08:00:27:A5:A6:76 信息收集 主机发现 arp-scan -l 发现靶机 IP 是 192.168.109.178 端口扫描 nmap -p- -A 192.168.109.178 目录…

AI基础 L27 Introduction to Automated Planning - III

Complexity Analysis • Complexity analyses are done on decision problems or language-recognition problems — Problems that have yes-or-no answers • A language is a set L of strings over some alphabet A — Recognition procedure for L ◦ A procedure R(x) th…