LeetCode-反转链表问题

news2024/12/23 23:37:25

1.反转链表

题目描述:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
在这里插入图片描述
思路: 反转链表也就是链表倒置,我一直以来的办法就是先建立一个头节点,之后再遍历链表来进行头插。
代码:

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null) {
            return null;
        }

        ListNode temp=new ListNode();
        ListNode cur=head;
        while(cur!=null) {
            ListNode curNext=cur.next;
            cur.next=temp.next;
            temp.next=cur;
            cur=curNext;
        }
        return temp.next;
}
}

2.反转链表 II

题目描述:

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回反转后的链表。
在这里插入图片描述
思路: 这一题一开始肯定会想到通过遍历得到左边节点的位置,以及左边节点前一个节点的位置,按照上一题头节点尾插的方法,以左边节点的前一个节点作为头节点来依次头插直至右边节点,然后对完成反转的部分和后面的链表进行拼接。但是这里有一个问题,如果left值给定的是1,那该找谁作用于头插的那个头节点。所以在进行这些操作之前,我首先定义一个空的头节点连接到原始链表之前,然后pre指针以头结点地址为初始值,cur指针以链表头为初始值进行遍历。具体可以看代码。

代码:

class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        if(head==null) {
            return null;
        }
        
        //用空节点链接链表,防止出现left=1时无法进行头插逆置的问题
        ListNode temp=new ListNode();
        temp.next=head;

		//设定两个指针方便头插
        ListNode pre=temp;
        ListNode cur=head;

		//遍历获得右边节点的下一个节点的地址,用于头插结束的循环条件以及倒置操作完成后的拼接
        while(right!=0&&cur!=null) {
            cur=cur.next;
            right--;
        }
        ListNode end=cur;

		//遍历得到左边节点的地址
        cur=head;
        while(left!=1) {
            pre=cur;
            cur=cur.next;
            left--;
        }

		//记录倒置完成后倒置部分最后一个节点的地址
        ListNode tail=cur;
        //尾插倒置
        while(cur!=end) {
            ListNode curNext=cur.next;
            cur.next=pre.next;
            pre.next=cur;
            cur=curNext;
        }
		
		//拼接
        tail.next=end; 

		//返回定义空节点的下一个节点即可
        return temp.next;


    }


    
}

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

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

相关文章

自动驾驶技术:驶向未来的智能之路

导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新&#xff0c;旨在实现汽车在不需要人…

强化学习--免模型预测与控制

免模型预测与控制 强化学习 免模型预测与控制免模型预测蒙特卡洛估计时序差分估计时序产分与蒙特卡洛的比较免模型控制Q-learning 免模型预测 蒙特卡洛估计 蒙特卡洛估计方法在强化学习中是免模型预测价值函数的方式之一&#xff0c;本质是一种统计模拟方法&#xff0c;它的发…

Mac brew install youtube-dl 【 youtube 下载工具:youtube-dl 安装】

文章目录 1. 简介2. 预备3. 安装4. 命令5. 测试 1. 简介 youtube-dl - 从youtube.com或其他视频平台下载视频 https://github.com/ytdl-org/youtube-dl 2. 预备 安装并配置 git安装 brew 3. 安装 MacBook-Pro ~ % brew install youtube-dl Warning: youtube-dl has been …

mysql 索引场景 大于>为什么失效

可以先看这个&#xff1a;Mysql查询条件为大于时&#xff0c;不走索引失效场景-CSDN博客 改为> &#xff0c;可双看到key_len减少了&#xff0c;从90变到了86&#xff0c;也就是说联合索引(a b c) &#xff0c;只有(a b) 起了效果,c 没有。 可以不查c看看结果&#xff0c;还…

Leetcode—459.重复的子字符串【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—459.重复的子字符串 算法思想 巧解的算法思想 实现代码 从第一个位置开始到s.size()之前&#xff0c;看s字符串是否是ss的子串 class Solution { public:bool repeatedSubstringPattern(string s) {return (s s).fin…

常见内存泄漏场景与解决方案

服务器开发文章目录 文章目录 服务器开发文章目录前言一、内存泄漏是什么&#xff1f;二、常见内存泄漏场景三、内存泄漏规避与定位总结 前言 作为C/C程序员&#xff0c;谁还不写Bug&#xff0c;Bug中最常见要数内存泄漏、内存崩溃、死锁等问题&#xff0c;本文主要讲解内存泄…

【Python表白系列】满屏飘字表白代码等你来取!(完整代码)

文章目录 环境需求完整代码详细分析系列文章环境需求 python3.12.0PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.…

汽车租赁小程序源码租车小程序

汽车租赁小程序&#xff0c;多门店租车小程序&#xff0c;本套系统分为用户端&#xff0c;门店管理端&#xff0c;总管理后台三部分。门店可以加盟入驻平台。可以源码&#xff0c;也可以二次开发&#xff0c;也可以定制开发。php开发语言&#xff0c;前端是uniapp。用户端是小程…

微软Microsoft二面面试题分享通过总结(不是标准答案分享

误打误撞 我写的shitty代码 当年面试算法开发岗竟然通过了 Background 先说下背景&#xff0c;软件工程本科毕业之后&#xff0c;当年8月到北欧读两年制硕士。面试发生在当年的11月&#xff0c;微软哥本哈根&#xff0c;location在丹麦的哥本哈根lingby&#xff08;是不是这么…

点赋网络:15秒快速新科技,重新定义新智能

随着科技的不断进步&#xff0c;自助设备在我们的生活中变得越来越常见。其中&#xff0c;智能饮品机作为一种方便快捷的购物方式&#xff0c;受到了广大消费者的喜爱。然而&#xff0c;以前的智能饮品机往往存在购物流程繁琐、速度缓慢等问题。现在&#xff0c;一种全新的智能…

Linux面试题精选:提升你的面试准备

大家有关于JavaScript知识点不知道可以去 &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 学习…

canal环境部署

docker 部署canal同步数据 1 环境: 2 Mysql 配置 查看 binlog 是否启用 SHOW VARIABLES LIKE ‘%log_bin%’; 开启 binlog, 修改 my.cnf docker cp mysql:/etc/my.cnf /data/mysql/conf 拷贝文件到临时目录修改后再拷贝回去 # For advice on how to change settings please …

基于SSM框架的安全教育平台论文

基于SSM框架的安全教育平台 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了安全教育平台的开发全过程。通过分析安全教育平台管理的不足&#xff0c;创建了一个计算机管理安全教育平台的方案。文章介绍了安全…

代码上传的gitee平台

1.首先我们访问工作台 - Gitee.com进行注册和登录 2.我们创建一个仓库&#xff1a; 3.在本地创建我们的项目 在这文件夹里面我们打开git bush,执行 一下操作&#xff1a; git init &#xff1a;初始化仓库 git status&#xff1a;检查状态 git add . &#xff1a;将当前文件…

如何使用MySQL Workbench将样本数据库导入到MySQL数据库服务器

如何使用MySQL Workbench将样本数据库导入到MySQL数据库服务器 摘要&#xff1a;在本教程中&#xff0c;您将学习如何使用MySQL Workbench将MySQL样本数据库加载到MySQL数据库服务器。之后&#xff0c;您将有classicmodels示例数据库以方便练习和学习MySQL。 步骤1. 下载class…

Tomcat性能优化

Tomcat是一款常用的Java Web应用服务器&#xff0c;对其进行性能优化可以提高Web应用的响应速度和吞吐量。Tomcat性能取决于内存的大小。 增加JVM内存&#xff1a;在Tomcat的bin目录下的catalina.sh文件中修改JAVA_OPTS参数&#xff0c;将堆内存大小-Xmx和-Xms调整为适当的值。…

Win11如何找到电脑中的NVIDIA控制面板

目录 桌面任意地方右击&#xff0c;选择

Python生成器(Generator)(继续更新...)

学习网页&#xff1a; Welcome to Python.orghttps://www.python.org/https://www.python.org/ Python生成器 生成器&#xff08;Generator&#xff09;是 Python 的一种特殊类型的迭代器。生成器允许你创建自己的数据流&#xff0c;每次从数据流中获取一个元素&#xff0c;…

【已解决-实操篇】SaTokenException: 非Web上下文无法获取Request问题解决-实操篇

在上一篇《【理论篇】SaTokenException: 非Web上下文无法获取Request问题解决 -理论篇》中&#xff0c;凯哥(公众号&#xff1a;凯哥Java)介绍了了产生这个问题的源码在哪里&#xff0c;以及怎么解决的方案。没有给出实际操作步骤。 本文&#xff0c;凯哥就通过threadLocal方案…

SQL错题集3

1.薪水第二多的员工的emp_no以及其对应的薪水salary limit a,b 其中a表示查询数据的起始位置&#xff0c;b表示返回的数量。 &#xff08;MySQL数据库中的记录是从0开始的&#xff09; 注意从0开始 2.员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth 聚合函数不能…