第二章 链表_24. 两两交换链表中的节点

news/2024/11/9 3:14:56/

文章目录

    • 一、题目
    • 二、遇到的问题
      • 1. 什么时候用单指针,什么时候用双指针?
      • 2. 为什么需要设置虚拟头结点?
      • 3. 如何交换相邻的两个节点?
      • 4. 为什么 cur 要指向要交换的两个节点的前一个节点?
      • 5. 什么时候结束交换?
    • 三、代码


24. 两两交换链表中的节点

一、题目

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

二、遇到的问题

1. 什么时候用单指针,什么时候用双指针?

2. 为什么需要设置虚拟头结点?

  1. 最终需要通过虚拟头结点来返回整个链表
  2. 便于操作链表

3. 如何交换相邻的两个节点?

cur——》1——》2——》3——》4
实现思路:
cur——》2——》1——》3——》4
在执行的过程中需要通过 temp 来暂存 1,通过 temp1 来暂存 3,防止连接断裂
当交换下一组相邻的两个节点(3、4)时,cur 指向 1(待交换的节点的前一个位置)

4. 为什么 cur 要指向要交换的两个节点的前一个节点?

保持连接不断裂。让交换后的这两个节点仍然连接在链表中。

5. 什么时候结束交换?

当最后没有节点,或者最后只剩下单个节点。即 cur.next == null; 或 cur.next.next == null

三、代码

public class Solution {public ListNode swapPairs(ListNode head) {// 虚拟头结点ListNode dummy = new ListNode(-1, head);ListNode cur = dummy;while (cur.next != null && cur.next.next != null) {// 暂存待交换的两个节点中的前一个节点ListNode temp = cur.next;cur.next = cur.next.next;// 暂存待交换的两个节点后的那个节点ListNode temp1 = cur.next.next;cur.next.next = temp;cur.next.next.next = temp1;cur = cur.next.next;}return dummy.next;}
}class ListNode {// 链表的值int val;// 节点的指针ListNode next;// 无惨构造函数public ListNode() {}// 带参构造函数public ListNode(int val) {this.val = val;}// 节点构造函数public ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}

http://www.ppmy.cn/news/477279.html

相关文章

F407/103启动文件and启动过程

STM32 启动文件简介 STM32 启动文件由 ST 官方提供,在官方的固件包里。 startup_stm32f40_41xxx.s 启动文件由汇编编写,是系统上电复位后第一个执行的程序。 启动文件主要做了以下工作: 1 、初始化堆栈指针 SP _initial_sp 2 、初始…

Linux学习入门笔记

计算机硬件 计算机五大基本部件 控制器 -----> 协调各个部件运算器 -----> 算术、逻辑运算存储单元 ----->内存、外存输入单元输出单元 cup 由控制器、运算器组成 计算机操作系统 操作系统 OS 管理和控制计算机系统中的硬件和软件资源,用于在用户与系统…

Jawbone蓝牙音箱:音箱也可“交朋友”

音箱也能玩社交?当然可以, Jawbone Mini Jambox蓝牙音箱就能做到。最近,Jawbone对其蓝牙音箱进行了软件更新,可以自动扫描周围的扬声器,一旦配对成功就可以分享数据,而且各扬声器可分声道发声。 之前也出现…

[调侃]美女要花多少钱

美女要花多少钱 (作者:☆花花) 2003年2月28日 都市时报B15 美女如此多娇,引无数男儿竞折腰。可惜维护成本太高,眼看着呼呼瘪钱包。哎呀呀,怎么得了?如何是好…… 让我先来数数一位美女的脸上要涂多少涂料。 化妆水。什么柔软水&…

JVM知识点梳理

什么是JVM? JVM是java虚拟机的缩写 ,也是java程式可以实现跨平台的关键。 JVM部分需要知道什么东西? JVM的结构和功能、参数配置、GC回收机制、GC回收器极其优缺点。 JVM结构(栈,程序计数器,方法区&#xf…

华为正式发布鸿蒙多少钱,正式发布!鸿蒙,来了!

原标题:正式发布!鸿蒙,来了! 鸿蒙真的来了!余承东宣布,鸿蒙的英文名叫HarmonyOS! 对于华为来讲,8月9日是华为开发者大会2019的首日,对于上台演讲的华为消费者业务CEO余承…

使用IPMItool临时设置PXE引导

案例背景: 某客户有1000台服务器需要重新安装系统,涉及机型NF5270M3、NF5270M4、SA5212H2和SA5212M4。如果每一台进bios设置pxe引导,或者按F11手动选择网卡启动,工作量太大。 解决方案: 客户机器都已设置了ipmi ip&…

Nordic nRF52840

mesh相关 二、环境搭建: 1.开发工具下载 SEGGER IDE下载地址:https://www.segger.com/ Nordic的MESH SDK目前只支持在这款IDE下开发。 2.官方MESH SDK与标准库下载 SDK下载地址:https://www.nordicsemi.com/Software-and-tools/Softwar…