两两交换链表中的节点

题目描述:

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

链接:

24. 两两交换链表中的节点 - 力扣(LeetCode) (leetcode-cn.com)

解题思路

思路一:迭代

创建哑结点dummy, dummy.next = head,设置current表示当前到达的节点,初始时current = dummy。每次需要交换 temp 后面的两个节点。

如果 current 的后面没有节点或者只有一个节点,则没有更多的节点需要交换,因此结束交换。否则,获得 current 后面的两个节点 n1 和 n2,通过更新节点的指针关系实现两两交换节点。

/*** @param {ListNode} head* @return {ListNode}*/
var swapPairs = function (head) {var dummy = new ListNode(undefined, head);var current = dummy, n1, n2;while (current.next !== null && current.next.next !== null) {n1 = current.next;n2 = current.next.next;n1.next = n2.next;n2.next = n1;current.next = n2;current = n1;}return dummy.next;
};

时间复杂度: O(n)

空间复杂度: O(1)

思路二:递归

递归的终止条件是链表中没有节点,或者链表中只有一个节点

var swapPairs = function (head) {if (head === null || head.next === null) {return head;}const newHead = head.next;head.next = swapPairs(newHead.next);newHead.next = head;return newHead;
};

时间复杂度: O(n)

空间复杂度: O(n)

LeedCode 24:两两交换链表中的节点相关推荐

  1. LeetCode-链表-24. 两两交换链表中的节点

    24. 两两交换链表中的节点 思路:使用一个头节点,然后用cur指针指向头 /*** Definition for singly-linked list.* struct ListNode {* in ...

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

    24. 两两交换链表中的节点 方法一:迭代,虚拟头结点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy ...

  3. Leetcode(24)——两两交换链表中的节点

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

  4. LeetCode 24.两两交换链表中的节点 C语言

    题目 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3- ...

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

    24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: 输入:head = [1 ...

  6. Java实现 LeetCode 24 两两交换链表中的节点

    24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3-&g ...

  7. LeetCode 24:两两交换链表中的节点、1662. 检查两个字符串数组是否相等

    今天一道是单链表一道是String类的 一:LeetCode 24:两两交换链表中的节点 先来看一下题目信息 索引 题目意思就是把一个链表中的两两节点进行交换,题目给的例子是4个节点,是偶数个,两两节 ...

  8. LeetCode 23合并K个升序链表24两两交换链表中的节点

    维护不易,点赞再看,感谢支持 合并K个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 1: 输入:lists = [[1 ...

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

    1 题目描述 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 2 题目示例 示例 2: 输入 ...

最新文章

  1. 刀剑英雄登陆显示服务器繁忙,玩刀剑遇到问题解决方法
  2. 微信小程序多张图片和表单一起上传,验证表单及进度条的实现完整代码
  3. 阅读类APP体验好不好?可从这些指标衡量
  4. svm最大间隔函数及目标函数推导
  5. LeetCode MySQL 1077. 项目员工 III
  6. vue加跨域代理静态文件404_vue-cli 设置跨域代理 线上地址报404
  7. ISCC2014-reverse
  8. python3.8.3好用吗_python使用3.8.3版本,存在报错
  9. 【CCF】201412-1门禁系统
  10. 如果华为自研的芯片无法给华为手机带来更高的性价比,那么华为自研芯片给消费者带来的意义是什么呢?
  11. 1月19日学习内容整理:Scrapy框架补充之scrapy-redis组件
  12. C++的隐式转换和explicit关键字
  13. amazon aws ip check
  14. java 动态转换器_非常简单的Java动态转换
  15. 关于笔记本电脑网卡出问题的简单解决
  16. 推荐10个超级实用的电脑软件 (可以快速提高工作效率)
  17. Misumi米思米数据线驱动无法安装
  18. linux tcp 113错误,linux系统报tcp_mark_head_lost错误的处理方法
  19. CSU_WF-中南大学网络服务队2020招新培训-硬件知识
  20. 7-6 王牌特工3 (15 分)

热门文章

  1. linux 手机 rom image,安卓手机刷机界面image 文件夹什么意思 里面的文件都是什么作用...
  2. it培训和自学的优缺点分析
  3. 关于阿里云对象存储OSS流量包说明
  4. nginx -rtmp多码率,动态码率二级m3u8适应
  5. 二战计算机技术,2020二本二战西南交大电子信息(计算机技术)上岸
  6. Android仿微信朋友圈图片展示效果,图片查看器
  7. 联创机房管理系统重连服务器失败,联创机房管理系统在CAD实验室应用探析.doc...
  8. Springboot毕设项目电子竞技赛事管理系统f1v55java+VUE+Mybatis+Maven+Mysql+sprnig)
  9. 实战攻防演之阻击CSRF威胁
  10. 四百左右的蓝牙耳机有哪些?四百左右好用的蓝牙耳机推荐