每日一题 24两两交换链表中的节点

news2025/1/17 14:12:24

题目

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

示例 1:

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

示例 2:

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

示例 3:

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

 题解

用25题的解法k=2

/**
 * 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) {
        int n = 0;
        for (ListNode cur = head; cur != null; cur = cur.next) {
            n++;
        }
        ListNode pre = null;
        ListNode cur = head;
        ListNode dummy = new ListNode(0,head);
        ListNode p0 = dummy;
        while (n >= 2) {
            for (int i = 0; i < 2; i++) {
                ListNode nxt = cur.next;
                cur.next = pre;
                pre = cur;
                cur = nxt;
            }
            ListNode nxt = p0.next;
            p0.next.next = cur;
            p0.next = pre;
            p0 = nxt;
            n -= 2;
        }
        return dummy.next;
    }
}

或者直接交换

/**
 * 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 dummy = new ListNode(0,head);
        ListNode p0 = dummy;
        ListNode p1 = head;
        while (p1 != null && p1.next != null) {
            ListNode p2 = p1.next;
            ListNode p3 = p2.next;

            p0.next = p2;//0->2
            p2.next = p1;//2->1
            p1.next = p3;//1->3

            p0 = p1;//下一个循环0在1的位置,1在3的位置
            p1 = p3;
        }
        return dummy.next;
    }
}

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

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

相关文章

数据暴涨时代,该如何数据治理?_光点科技

随着信息技术的迅猛发展&#xff0c;数据已经成为现代社会的核心资源。在这个被称为"数据暴涨时代"的时代里&#xff0c;大量的数据源源不断地被产生和积累&#xff0c;但如何有效地管理、分析和利用这些数据成为了一个迫切需要解决的问题。数据治理&#xff0c;作为…

【JVM】如何判定一个对象已死以及“标记-清除”、“标记-复制”、“标记-整理”三种垃圾收集算法

文章目录 0、如何判定一个对象的生死&#xff1f;1、上文提到的引用又是什么1、强引用&#xff1a;2、软引用&#xff1a;3、弱引用&#xff1a;4、虚引用&#xff1a; 2、垃圾收集算法1、标记-清除2、标记-复制优化&#xff1a;&#x1f447; 3、标记-整理 0、如何判定一个对象…

2023雷军年度演讲听后感

&#xff08;点击即可收听&#xff09; 2023雷军年度演讲-文字完整版 2023年8月14号晚,雷军的第四次演讲,热些沸腾 相比前三次演讲,第一次在2020 年 8 月 11 日&#xff0c;以“相信自己&#xff0c;一往无前”为主题进行了分享&#xff0c;第二次,第三次分别是在2021 年和 202…

node 版本与 node-sass node-loader 版本的对应关系

node 版本与 node-sass 版本的对应关系&#xff1a; 其一、查看文档的地址&#xff1a; https://www.npmjs.com/package/node-sass 其二、对应关系的表格&#xff1a; 对应版本 node16 “node-sass”: “6.0.1” “sass-loader”: “10.2.0” node: v14.19.0; node-sass: ^4…

【js】js中apply()、bind()、call()用法

这三个方法的作用基本上相同&#xff0c;用法上有一些不同&#xff0c;下面先对比一下它们的用法&#xff1a; apply&#xff1a;调用一个具有给定 this 值的函数&#xff0c;以及以一个数组&#xff08;或一个类数组对象&#xff09;的形式提供的参数。 语法&#xff1a; ap…

allure相关笔记

allure.epic&#xff1a;最高级别的分类&#xff0c;表示一个大的功能、模块或业务场景。功能模块 allure.feature&#xff1a;表示一个功能模块或业务子场景&#xff0c;位于史诗下。主流程 allure.story&#xff1a;表示一个具体的测试场景&#xff0c;位于特性下。具体主流程…

分享几个自己常用的JS库加快开发效率

分享经常用的几个js库&#xff0c;主要涉及到前端的视频播放&#xff08;直播&#xff09;、时间格式化、时间范围选择、连续翻滚、防抖等js库。可以很好的解决前端的一些问题。 1.videojs 是一个通用的在网页上嵌入视频播放器的 JS 库&#xff0c;Video.js 自动检测浏览器对 …

零代码新思路,基于LogicFlow的页面逻辑编排

在滴滴客服业务里&#xff0c;通过零代码的方式来配置页面已有丰富的落地经验&#xff0c;大大提高了服务用户的效率和质量。但是传统零代码在页面逻辑配置上表现并不好&#xff0c;很难做到灵活扩展。因此&#xff0c;滴滴客服技术团队探索出一种新思路&#xff0c;用流程编排…

20W IP网络吸顶喇叭 POE供电吸顶喇叭

SV-29852T 20W IP网络吸顶喇叭产品简介 产品用途&#xff1a; ◆室内豪华型吸顶喇叭一体化网络音频解码扬声器&#xff0c;用于广播分区音频解码、声音还原作用 ◆应用场地如火车站、地铁、教堂、工厂、仓库、公园停车场等&#xff1b;室内使用效果均佳。 产品特点&#xff…

多传感器外参标定

文章目录 lidar和imu标定code: [https://gitcode.net/weixin_42990464/calib_lidar_imu](https://gitcode.net/weixin_42990464/calib_lidar_imu)code: [https://github.com/APRIL-ZJU/lidar_IMU_calib](https://github.com/APRIL-ZJU/lidar_IMU_calib) lidar和imu标定 code: …

WORD如何调整表格的宽度

目录 1. 调整表格宽度 1. 调整表格宽度 如下图&#xff0c;要求将文档中的表格宽度调整到2厘米。 点击选中要调整的表格&#xff0c;依次点击【布局】-【属性】选项。 如下图&#xff0c;通过上一个步骤的操作&#xff0c;系统弹出表格属性对话框。 在弹出的【表格属性】对话框…

尚硅谷MySQL笔记 3-9

我不会记录的特别详细 大体框架 基本的Select语句运算符排序与分页多表查询单行函数聚合函数子查询 第三章 基本的SELECT语句 SQL分类 这个分类有很多种&#xff0c;大致了解下即可 DDL&#xff08;Data Definition Languages、数据定义语言&#xff09;&#xff0c;定义了…

DRF的限流组件(源码分析)

限流&#xff0c;限制用户访问频率&#xff0c;例如&#xff1a;用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次&#xff0c; 防止盗刷。 对于匿名用户&#xff0c;使用用户IP作为唯一标识。对于登录用户&#xff0c;使用用户ID或名称作为唯一标识。 缓存{用户…

图文结合丨带你轻松玩转MySQL Shell for GreatSQL

一、引言 1.1 什么是MySQL Shell ? MySQL Shell 是 MySQL 的一个高级客户端和代码编辑器&#xff0c;是第二代 MySQL 客户端。第一代 MySQL 客户端即我们常用的 MySQL 。除了提供类似于 MySQL 的 SQL 功能外&#xff0c;MySQL Shell 还提供 JavaScript 和 Python 脚本功能&a…

免费开源服务器资源监控系统grafana+prometheus+node_exporter

有项目做测试的时候需要查询服务器资源利用情况&#xff0c;自己又没写相应的模块&#xff0c;此时就需要一套好用的资源监控系统&#xff0c;&#xff0c;咨询了运维人员给推荐了一套&#xff0c;装完后真的很好用。 就是grafanaprometheusnode_exporter&#xff08;linux&am…

Python项目实战:将3D灰度图像转换为3D彩色图像

文章目录 (3D-GRAY) to (3D-RGB)&#xff1a;使用颜色映射的方式&#xff0c;将灰度值映射到彩色空间中的特定颜色。一、多维数组&#xff1a;10x12x14&#xff08;1&#xff09;channel重复&#xff1a;在RGB中&#xff0c;将【灰度图】分别赋值给【R/G/B图】&#xff0c;显示…

NPM与外部服务的集成(下)

目录 1、撤消访问令牌 2、在CI/CD工作流中使用私有包 2.1 创建新的访问令牌 持续整合 持续部署 交互式工作流 CIDR白名单 2.2 将令牌设置为CI/CD服务器上的环境变量 2.3 创建并签入特定于项目的.npmrc文件 2.4 令牌安全 3、Docker和私有模块 3.1 背景&#xff1a;运…

类加载器与反射

类加载器&#xff0c;反射 1.类加载器 1.1类加载器【理解】 作用 负责将.class文件&#xff08;存储的物理文件&#xff09;加载在到内存中 1.2类加载的过程【理解】 类加载时机 创建类的实例&#xff08;对象&#xff09;调用类的类方法访问类或者接口的类变量&#xff0…

如何做好项目进度管理,项目经理可以这样做

项目追踪是通过把控项目的进度、成员的任务完成情况&#xff0c;以及项目计划进展等方面来进行的。项目经理在进行项目进度跟踪时&#xff0c;主要从以下三个方面进行&#xff1a; 1、制定并完善项目计划 项目经理使用进度猫等工具制定项目计划&#xff0c;通过甘特图对项目…

将Excel表格复制到Word文档中

目录 方式1&#xff1a;粘贴 -> 保留源格式&#xff08;CtrlV的默认行为&#xff09;参考文献 方式1&#xff1a;粘贴 -> 保留源格式&#xff08;CtrlV的默认行为&#xff09; 保留源格式是Word在粘贴来自其他程序内容时的默认行为&#xff08;直接CtrlV&#xff09;。如…