当前位置: 首页 > news >正文

【LeetCode每天一题】Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head. You may not modify the values in the list's nodes, only nodes itself may be changed.

 Example:          Given 1->2->3->4, you should return the list as 2->1->4->3.

 

将相邻的两个节点进行交换,在不交换值的前提条件下,只对节点指针进行交换。   时间复杂度为o(n),空间复杂度为O(1)。

思路: 可以利用链表中的哨兵机制来简化操作。具体操作步骤如下:

   

    

 1 class Solution(object):
 2     def swapPairs(self, head):
 3         """
 4         :type head: ListNode
 5         :rtype: ListNode
 6         """
 7         GuardNode = p = ListNode(0)
 8         GuardNode.next = head
 9         
10         while head and head.next:
11             tem = head.next         # 指向第二个节点
12             head.next = tem.next # 第一个节点指向第三个节点
13             tem.next = head        # 第二个节点指向第一个节点
14             p.next = tem             # 哨兵指向反转后的第一个节点
15             p = head                   # 指向下两个待反转节点的前一个节点。
16             head = head.next     # 指向下面即将反转的第一个节点
17         
18         return GuardNode.next

 

转载于:https://www.cnblogs.com/GoodRnne/p/10580333.html

相关文章:

  • 解决ajax 跨域请求问题
  • 红帽发布第四季度和2019财年报告,多项指标维持两位数增速
  • sql的date和string转换
  • Go Web如何处理Web请求?
  • Maven之setting.xml 配置详解
  • 说说我为什么看好Spring Cloud Alibaba
  • Selenium 人工智能操作工具
  • 雷军:明后年会迎来5G手机的全面换机潮
  • Arts 第三周(4/1 ~ 4/7)
  • 3.31
  • 经常被问到的十个 Java 面试题?你Get了吗?
  • linux gcc 静态 动态链接库
  • Apache基金会总结RocketMQ:中国70%的银行核心业务已采用,国内技术人员贡献明显增多...
  • 如何在Kubernetes上运行Apache Flink
  • go package包的使用
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • bearychat的java client
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Webpack 4 学习01(基础配置)
  • 初识 webpack
  • 给新手的新浪微博 SDK 集成教程【一】
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 什么是Javascript函数节流?
  • 我这样减少了26.5M Java内存!
  • 想写好前端,先练好内功
  • 正则与JS中的正则
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Spring Batch JSON 支持
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #pragma 指令
  • #图像处理
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十六)Flask之蓝图
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)重识new
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net framework4与其client profile版本的区别
  • .NET Micro Framework初体验
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET6实现破解Modbus poll点表配置文件
  • .Net7 环境安装配置
  • .NetCore 如何动态路由
  • .NET企业级应用架构设计系列之结尾篇
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [] 与 [[]], -gt 与 > 的比较