LeetCode--HOT100题(30)

news2024/12/24 9:00:53

目录

  • 题目描述:24. 两两交换链表中的节点(中等)
    • 题目接口
    • 解题思路
    • 代码
  • PS:

题目描述:24. 两两交换链表中的节点(中等)

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

LeetCode做题链接:LeetCode-两两交换链表中的节点

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

链表中节点的数目在范围 [0, 100] 内
0 <= Node.val <= 100

题目接口

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {

    }
}

解题思路

使用了三个指针在进行交换,大致如下:下图为所有指针的初始状态

  • 1.开始交换,将数字为0的这一个指针指向数子2
  • 2.将数字1指向数字3,防止下一步的操作使整个链表丢失
  • 3.将数字2再指向数字1
  • 4.重新放置好指针,进行下次循环以及判断

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode pre = new ListNode(0);
        pre.next = head;
        ListNode temp = pre;
        while(temp.next != null && temp.next.next != null) {
            ListNode start = temp.next;
            ListNode end = temp.next.next;
            temp.next = end;
            start.next = end.next;
            end.next = start;
            temp = start;
        }
        return pre.next;
    }
}

成功!
在这里插入图片描述

注:本题还有递归的解法,可以点击下面连接查看
画解算法:24. 两两交换链表中的节点

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

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

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

相关文章

二分查找理论Binary Search代码实现及P1102 A-B 数对

二分查找 在一个1&#xff5e;n的递增序列中&#xff0c;怎么用二分查找数字x的下标&#xff1f; 在一个没用重复元素的递增序列中&#xff0c;用二分查找的方法最多需要查找log(n)次&#xff0c;也就是在一个区间内l&#xff5e;r不断的选取中间下标(mid)&#xff0c;直到mi…

maven如何建立JavaWeb项目并连接数据库,验证登录

这里是建立建立web项目&#xff1a;Maven如何创建Java web项目&#xff08;纯干货版&#xff09;&#xff01;&#xff01;&#xff01;_明天更新的博客-CSDN博客 我们主要演示如何连接数据库验证登录。 1.在webapp目录下创建我们的登录页面&#xff1a;index.jsp 还需要再…

生信豆芽菜-单基因与免疫浸润的关系

网址&#xff1a;http://www.sxdyc.com/panCancerImmuInfil 该工具主要用于查看单基因在泛癌中与免疫细胞评分的相关性 提交后等待运行成功即可&#xff0c;还可以关注&#xff1a;豆芽数据分析

Modbus工业RFID设备在自动化生产线中的应用

传统半自动化生产线在运作的过程&#xff0c;因为技工的熟练程度&#xff0c;专业素养的不同&#xff0c;在制造过程中过多的人为干预&#xff0c;工厂将很难对每条生产线的产能进行标准化管理和优化。如果半自动化生产线系统是通过前道工序的作业结果和检测结果来决定产品在下…

MySQL事务隔离级别、锁机制、三大范式

目录 一、事务 1.概念 2.事务的特性 3.并发带来的问题 4.事务的隔离级别 二、锁机制 1.什么是锁 2.MySQL锁分类 3.乐观悲观锁 4.共享排它锁 5.意向锁 6.粒度锁 三、三大范式 1.第一范式 2.第二范式 3.第三范式 一、事务 1.概念 事务是逻辑上的一组操作&#xf…

XXL-JOB任务调度平台的安装使用教程(保姆级教程)

首先从GitHub上面将项目clone下来。 GitHub地址&#xff1a;https://gitee.com/xuxueli0323/xxl-job.git 下载好之后&#xff0c;然后通过IDEA打开&#xff0c;将Maven编译好后项目结构如下 在数据库中运行这个SQL文件 &#xff0c;将基础表创建出来。就可以得到左边图中那些表…

P12-Retentive NetWork-RetNet挑战Transformer

论文地址:https://arxiv.org/abs/2307.08621 目录 Abstract 一.Introduction 二.Retentive Networks 2.1Retention 2.2Gated Multi-Scale Retention 2.3Overall Architecture of Retention Networks 2.4Relation to and Differences from Previous Methods 三.Experime…

并发编程的艺术-“程”:探索进程、线程、协程、纤程与管程

一、并发中的程 在计算机科学领域&#xff0c;处理多任务和并发执行是一项重要的挑战。为了解决这个问题&#xff0c;出现了多种并发模型和概念&#xff0c;包括进程、线程、协程、纤程和管程。本文将深入探讨这些并发概念&#xff0c;帮助读者理解它们的原理、特点和应用场景…

ABeam×Startup丨德硕管理咨询(深圳)创新研究团队前往灵境至维·既明科技进行拜访交流

近日&#xff0c;德硕管理咨询&#xff08;深圳&#xff09;&#xff08;以下简称“ABeam-SZ”&#xff09;创新研究团队一行前往灵境至维既明科技有限公司&#xff08;以下简称“灵境至维”&#xff09;进行拜访交流&#xff0c;探讨线上虚拟空间的商业模式。 现场合影 &…

PMP备考指南来啦!

第一步&#xff1a;通读教材&#xff0c;了解学习内容 在正式开始课程的学习前&#xff0c;可以先快速简单地阅览一遍教材&#xff08;PMBOK&#xff09;&#xff0c;在较短的时间内知道自己将要学习的是什么内容&#xff1b;同时可以标记出难理解的知识点。这样做有以下两个好…

CHATGPT源码简介与使用指南

CHATGPT源码的基本介绍 CHATGPT源码备受关注&#xff0c;它是一款基于人工智能的聊天机器人&#xff0c;旨在帮助开发者快速搭建自己的聊天机器人&#xff0c;无需编写代码。下面是对CHATGPT搭建源码的详细介绍。 CHATGPT源码的构建和功能 CHATGPT源码是基于Google的自然语言…

【实用干货】3个技巧 - 教你怎么提取公众号封面图!

平时刷公众号的时候遇到自己喜欢的封面&#xff0c;怎么撸过来呢&#xff1f;小埋教大家几个比较实用的方法。 1.135编辑器提取 也是小埋酱经常用的工具&#xff0c;因为平时码字的时候是用的135&#xff0c;所以用起来比较方便&#xff0c;不光光是公众号、视频、音频、视频号…

【腾讯云 TDSQL-C Serverless 产品体验】 使用 Python 向 TDSQL-C 添加读取数据 实现词云图

文章目录 前言学到什么?准备工作申请TDSQL数据库1. 点击登录腾讯云2. 点击立即选购 ,如下图所示3. 选购页面中的数据库配置选项如下4. 基础信息5. 配置完成后点击 右下角的立即购买即可6. 点击立即购买后会有弹窗如下, 再次点击7. 购买完成后 , 会出现弹窗 , 点击前往管理页面…

SD卡相关资料

STM32429I-EVAL1 正点原子 ALIENTEK探索者STM32F4、ALIENTEK战舰STM32F1 V3 野火 野火STM32F103-V2霸道 中科蓝汛 AB5322B QFN32内部软开关蓝牙音箱

ppt怎么转pdf文件?这几种方法搞定

ppt怎么转pdf文件&#xff1f;将ppt转为pdf可以让你更方便地分享你的演示文稿&#xff0c;无论你的观众使用的是什么设备或操作系统&#xff0c;他们都可以轻松地查看你的演示文稿。此外&#xff0c;将ppt转为pdf还可以防止其他人修改你的文稿&#xff0c;保证了你的演示文稿的…

Vue-打印组件页面

场景: 需要将页面的局部信息打印出来&#xff0c;只在前端实现&#xff0c;不要占用后端的资源。经过百度经验&#xff0c;决定使用 print-js和html2canvas组件。 1. 下载包 npm install print-js --save npm install --save html2canvas 2. 组件内引用 <script>impo…

解决 Mac 上使用 Electron Updater 更新 App 不成功的问题!!!

文章目录 1. 现象2. 分析并如何解决3. 后续 1. 现象 在Mac电脑上&#xff0c;使用Electron Updater对程序进行更新&#xff0c;但是一直不成功&#xff0c;也不报错。具体表现是这样的&#xff1a;当前我的程序版本是3.11版本&#xff0c;点击更新之后&#xff0c;也下载了&am…

16.2.3 【Linux】离线管理问题

要注意的是&#xff0c;我们在工作管理当中提到的“背景”指的是在终端机模式下可以避免 [crtl]-c 中断的一个情境&#xff0c; 你可以说那个是 bash 的背景&#xff0c;并不是放到系统的背景去。所以&#xff0c;工作管理的背景依旧与终端机有关。在这样的情况下&#xff0c;如…

近期关于开展微信小程序备案的通知,西米支付来教大家微信小程序如何备案

微信小程序备案步骤&#xff1a; 登录微信公众平台&#xff1a; 使用你的微信公众号管理员账号登录微信公众平台。 选择小程序管理&#xff1a; 在左侧菜单中选择“小程序”进行管理。 进入小程序设置&#xff1a; 选择你要备案的小程序&#xff0c;进入小程序管理页面。 填…

Hyper-V 虚拟机网络慢的原因及解决方案参考

Hyper-V VM 上的网络性能不佳 有几次我遇到过这样一种情况&#xff0c;即从运行Windows Server 的Hyper-V主机上的虚拟机复制文件的速度要慢得多。在本文中&#xff0c;我尝试描述几种不同的方法来提高在Windows Server &#xff08;以及最新的Windows 10和11版本&#xff09;上…