Swap Nodes in Pairs

2023-05-16

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

这一题要求两两交换链表中的元素。题目要求常数时间,即无法使用递归解法。

主要思路是两个两个结点<node1,node2>进行处理,为了维护连接,需要维护一个prev头元素,操作之前指向node1,操作之后指向node2。为了防止头元素的问题,需要再次用到dummy技巧。每次处理时,实际是需要将prev->node1,node1->node2,node2->node2.next这三条指向进行重定向,先交换的不能影响后续交换需要用到的连接,实际操作时可以画个图来具体看看先后顺序。时间复杂度O(n),空间复杂度O(1)。代码如下:


class Solution(object):
    def swapPairs(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if not head or not head.next:
            return head
        dummy = ListNode(-1)
        dummy.next = head
        prev = dummy
        cur = head 
        while cur and cur.next:
            
            prev.next = cur.next
            cur.next = prev.next.next
            prev.next.next = cur
            prev = cur
            cur = cur.next
        return dummy.next  

 

转载于:https://www.cnblogs.com/sherylwang/p/5430974.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swap Nodes in Pairs 的相关文章

  • 如何正确删除C++中链表的节点

    我感觉好像我实际上并没有删除节点并释放内存 我想我只是移动指针 所以当我打印链接列表时 列表不会打印我删除的元素 所以我的问题是我实际上是删除节点还是只是简单地重新排列指针 这样看起来我正在删除节点 本质上只是破坏链接但不删除节点 感谢您的
  • XPath 选择带句点的节点

    我有一个 XML 文档 其中一些节点有 以他们的名义
  • Xpath 节点选择 - 如何选择 2 个不同的元素?

    我尝试通过 HtmlAgilityPack 选择多个节点 但失败了 所以 我想做的是收集a节点和li面包屑中的节点div元素 这是我尝试过的 string srxPathOfCategory div class breadcrumbs li
  • DX TreeList - 如何更改某些节点的颜色

    我有 DX treeList 它有一些功能 如复制 粘贴 删除等 如何在 C 代码中将某些节点颜色更改为其他颜色 你可以看一下here http 64 237 51 130 Help document XtraTreeList 单个细胞的外
  • C# - XML - 压缩

    我遇到过这样的情况 我正在生成要提交到 Web 服务的 XML 文件 有时由于数据量超过 30mb 或 50mb 我需要使用 c net Framework 4 0 来压缩文件 而不是使用拥有大部分数据的节点之一 我不知道我要怎么做 如果有
  • JavaScript 中的节点是什么?

    我想知道 JavaScript 中的节点到底是什么 如函数中所示 element nodeType row parentNode removeChild row 在这种情况下 节点 只是一个 HTML 元素 DOM 是代表网站 HTML 的
  • 强制 graphviz 保留节点位置

    我有一个随时间变化的图表 通常会添加新节点 我需要多次重新生成图表 并希望所有节点都保留在原来的位置 当使用 graphviz 时 这部分有效fdp 算法 设置pin flag 并指定位置pos 争论 在大多数情况下 这非常有效 但特别是当
  • 如何在 Unix 中交换文件名?

    有什么方法可以在不使用临时变量的情况下快速完成此操作 有内置函数吗 编辑 谢谢你们的回答 看起来我需要澄清我的问题 但在大多数情况下 你们假设是正确的 有两个文件 并且文件名是相反的 文件 A 的名称为 B name file 文件 B 的
  • 如何在Python中重塑networkx图?

    所以我创建了一种非常幼稚 可能效率低下 的生成哈斯图的方法 问题 我有 4 个维度 p q r s 我想统一显示它 超正方体 但我不知道如何重塑它 如何在 Python 中重塑 networkx 图 我见过一些人们使用的例子spring l
  • AWS EMR 具有仅用于 S3/EMRFS 处理的任务节点和 1 个核心节点

    鉴于 AWS 与 EMR 为您提供了优化的 Spark 体验 那么 If I am planning to only use S3 EMRFS for both directly reading and directly writing a
  • 使用 R 在坐标系中绘制节点和边

    我实施了FR测试here http itee uq edu au zxf papers ACMMM08 distributionn pdf现在我想通过可视化 R 中生成的最小生成树来测试它 顶点和边应该在坐标系中绘制 此外 我想为每个点设置
  • 交换 NSMutableArray 中的元素

    是否有任何特殊方法可以使 NSMutableArray 中的元素交换更容易或更直接 交换ObjectAtIndex 与ObjectAtIndex http developer apple com library mac documentat
  • 仅在悬停时显示 d3 节点文本

    我试图仅在鼠标悬停时显示节点文本 当我将鼠标悬停在节点上时 svg 圆的不透明度发生变化 但仅显示第一个节点的文本 我发现这是因为我如何使用 select 元素 但我不知道如何为我悬停的节点提取正确的文本 这是我目前所拥有的 node ap
  • 为什么与 xor 进行交换在 C++ 中工作正常,但在 Java 中却不行?一些谜题[重复]

    这个问题在这里已经有答案了 可能的重复 为什么这个语句在 java 中不起作用 x y x y https stackoverflow com questions 3844934 why is this statement not work
  • hadoop/hdfs/name 处于不一致状态:存储目录(hadoop/hdfs/data/)不存在或不可访问

    我已经尝试了 stackoverflow 上提供的有关此主题的所有不同解决方案 但没有帮助 再次询问具体的日志和详细信息 任何帮助表示赞赏 我的 Hadoop 集群中有 1 个主节点和 5 个从节点 ubuntu用户和ubuntu组是所有者
  • d3js 将标签移动到节点旁边

    我正在开发一个通过图表进行模式表示的项目 我来从 json 检索数据以生成图形并找到与节点关联的标签 我还想找到与链接对应的标签 但是 当移动节点时 我无法移动标签 有什么帮助吗 请参阅此处的代码 http jsfiddle net obo
  • 如何更改 Linux 内核交换守护进程 (kswapd) 超时?

    我想通过使用闪存 SSD 等快速设备作为交换设备来减少 kswapd 超时以提高性能 您可以更改以下行为kswapd通过2种方式 通过Proc文件系统 From IBM 开发者工作坊 http www ibm com developerwo
  • 如何非递归地获取二叉树中叶节点的数量?

    我有一个练习问题被难住了 在不使用递归的情况下获取二叉树中叶节点的数量 我已经四处寻找一些想法 我已经看到了一些想法 例如将节点传递到堆栈 但我不知道当有多个分支时如何做到这一点 任何人都可以提供指针吗 NumberOfLeafNodes
  • 与右值交换

    假设我想要swap它适用于右值 并且不想为右值 左值引用的所有组合编写 4 个版本 右值 右值版本有点毫无意义 但也无害 我想出了这个 template
  • php简单xml如何读取具有不同子节点级别的多个节点

    我有一个 xml 文件 其中包含不同的命名节点和多级子节点 每个节点之间都不同 我应该如何访问数据 需要很多嵌套的for循环吗 以下是 xml 代码示例

随机推荐

  • 玩转X-CTR100 l STM32F4 l BMP280气压计传感器

    我造轮子 xff0c 你造车 xff0c 创客一起造起来 xff01 塔克创新资讯 塔克社区 www xtark cn 塔克博客 www cnblogs com xtark 本文介绍X CTR100控制器 扩展BMP280气压计传感器 xf
  • arduino连接LCD1602A

    接线图 caption id 61 34 attachment 1183 34 align 61 34 alignnone 34 width 61 34 1108 34 LCD1602A接线图 xff08 4位 xff09 caption
  • CURL详解

    目前为目最全的CURL中文说明了 学PHP的要好好掌握 有很多的参数 大部份都很有用 真正掌握了它和正则 一定就是个采集高手了 PHP中的CURL函数库 xff08 Client URL Library Function xff09 cur
  • C++各种类库介绍(转)

    C 43 43 类库介绍 再次体现了C 43 43 保持核心语言的效率同时大力发展应用库的发展趋势 在C 43 43 中 xff0c 库的地位是非常高的 C 43 43 之父 BJARNESTROUSTRUP先生多次表示了设计库来扩充功能要
  • 跨平台C++开源码的两种经常使用编译方式

    作者 xff1a 朱金灿 来源 xff1a http blog csdn net clever101 跨平台C 43 43 开源代码为适应各种编译器的编译 xff0c 採用了两种方式方面来适配 一种是makefile方式 以著名的空间数据格
  • 暗渡陈仓:用低功耗设备进行破解和渗透测试

    信息安全技术丛书 暗渡陈仓 xff1a 用低功耗设备进行 破解和渗透测试 Hacking and Penetration Testing with Low Power Devices 美 菲利普 布勒斯特拉 xff08 Philip Pol
  • EPG

    简介 EPG 是Electronic Program Guide的 英文缩写 xff0c 意思是电子节目菜单 IPTV所提供的各种业务的索引及导航都是通过 EPG系统来完成的 IPTV EPG实际上就是 IPTV的一个门户系统 EPG系统的
  • 什么是寄存器

    我们看到的 STM32 芯片已经是已经封装好的成品 xff0c 主要由内核和片上外设组成 若与 电脑类比 xff0c 内核与外设就如同电脑上的 CPU 与主板 内存 显卡 硬盘的关系 STM32F429 采用的是 Cortex M4 内核
  • 编程-函数栈与进程栈

    https mp weixin qq com s QsY3cwpLQ5qthgrpZJkBng 一 代码编程极简进化史 从纸带上的机器码 xff0c 到汇编语言算是比较自然而然的变化 因为汇编语言每一条指令即对应着一条机器指令码 汇编中的j
  • 开源飞控

    OpenPilot 官网 xff1a http www openpilot org WiKi xff1a http wiki openpilot cc 论坛 xff1a http bbs tryfly cn forum php KK飞控 M
  • Windows Server 2008r2 取消屏幕自动锁定

    Windows Server 2008r2取消屏幕锁定 企业网管在日常维护服务器的时候 xff0c 往往不会每次有问题都去机房处理 xff0c 一般都是通过远程连接到服务器终端上 xff0c 但是很多企业网管总是被Server 2008服务
  • JAVA中对List<Map<String,Object>>中的中文汉字进行排序

    转载于 xff1a http blog csdn net flykos article details 54631573 参考 xff1a http www jb51 net article 88710 htm 本篇文章 xff0c 对中文
  • Python maketrans() 方法

    描述 Python maketrans 方法用于给 translate 方法创建字符映射转换表 可以只接受一个参数 xff0c 此时这个参数是个字典类型 xff08 暂不研究这种情况 xff09 对于接受两个参数的最简单的调用方式 xff0
  • vue-cli3 项目从搭建优化到docker部署

    项目地址 vue cli3 project 欢迎 star 原文地址 www ccode live lentoo list 1 创建一个vue项目 相信大部分人都已经知道怎么创建项目的 xff0c 可以跳过这一节 xff0c 看下一节 1
  • 解决Linux:No route to host

    在VPS上面配置了某分布式服务 xff0c 死活跑不起来 xff0c 该配置的都配置了 xff0c 真是见鬼了 日志里面很多 xff1a No route to host 但是 xff0c 我能ping通 xff0c 为了排除是程序自身原因
  • 停止linux的ntpd服务

    service ntpd status service ntpd stop service ntpd status chkconfig list ntpd chkconfig level 35 ntpd off chkconfig list
  • 09.打印“caoliuzhenhao”

    printf 命令用于格式化输出 xff0c 是echo命令的增强版 它是C语言printf 库函数的一个有限的变形 xff0c 并且在语法上有些不同 注意 xff1a printf 由 POSIX 标准所定义 xff0c 移植性要比 ec
  • http://www.seattletechinterviews.com/

    http www seattletechinterviews com 转载于 https www cnblogs com kungfupanda p 6503751 html
  • inode的若干锚

    insert inode hash hash an inode 64 inode unhashed inode 64 hashval unsigned long value used to locate this object in the
  • Swap Nodes in Pairs

    Given a linked list swap every two adjacent nodes and return its head For example Given 1 gt 2 gt 3 gt 4 you should retu