题目:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

说明:

  • 你的算法只能使用常数的额外空间。
  • 你不能只是单纯的改变节点内部的值,而是需要实际

解析:

 1 ListNode* swapPairs(ListNode* head) {
 2     if(head == nullptr)
 3         return head;
 4     ListNode *p = head, *q = head->next, *m = head;
 5     if(q != nullptr)
 6     {
 7         head = q;
 8         m = p;
 9     }
10     int c = 0;
11     while(nullptr != q)
12     {
13         if(c)
14         {
15             m->next = q;
16             m = p;
17         }
18         p->next = q->next;
19         q->next = p;
20         p = p->next;
21         if(nullptr != p)
22             q = p->next;
23         else
24             break;
25         c++;
26     }
27     return head;
28 }

这种方法中p,q指向需要交换的两个节点, m永远指向被交换两个节点前的节点, 通过m把交换后的两个节点与已经交换完成的节点连接起来, 总体空间复杂度O(1),

转载于:https://www.cnblogs.com/bzaq/p/9964539.html

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

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

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

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

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

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

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

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

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

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

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

  6. 24. 两两交换链表中的节点-两两反转链表-LeetCode

    一.题目 二.思路 1.采用递归的方式 2.可以通过递归的方式实现两两交换链表中的节点. 递归的终止条件是链表中没有节点,或者链表中只有一个节点,此时无法进行交换. 如果链表中至少有两个节点,则在两两 ...

  7. LeedCode 24:两两交换链表中的节点

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

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

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

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

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

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

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

最新文章

  1. webpack 大法好 ---- 基础概念与配置(1)
  2. Winform中怎样重写窗体关闭事件实现验证密码通过才能关闭窗体
  3. //随机生成1位大写字母\小写字母\数字
  4. Linux中Shell的命令替换用法笔记
  5. 优质学习内容(自用)
  6. c语言字符指针清零,C语言中字符串的内存地址操作的相关函数简介
  7. C# | C#中变量(局部变量)的声明和范围
  8. COJS 1752. [BOI2007]摩基亚Mokia
  9. DSP28335 CAN通讯实验
  10. java易宝支付接口文档_易宝支付的最新接口文档
  11. 萤火小程序商城系统安装教程
  12. TunesKit Video Cutter for mac(视频分割编辑器)
  13. HDP 03.FreeIPA安装
  14. 图像修复(拖影、失焦、雨雾、模糊)deblurGAN 论文解读
  15. 你曾后悔进入 IT 行业吗?
  16. 东大22春领导科学与决策X《领导科学与决策》在线平时作业3百分非答案
  17. html的progress 怎么改变默认样式
  18. 纯电小型领军者 奇瑞无界Pro
  19. mac系统共享服务器,mac共享服务器
  20. 搭建数据指标体系(抖音)

热门文章

  1. 设置Android设备在睡眠期间始终保持WLAN开启的代码实现
  2. [MSSQL2012]LEAD函数
  3. 子元素绝对定位absolute后,自动撑开宽度
  4. Developerkit Link Develop Demo 环境配置指南
  5. ASP.NET 获取IIS应用程序池的托管管道模式
  6. gzip压缩算法: gzip 所使用压缩算法的基本原理
  7. .NET简谈脚本引擎系列(一:认识脚本引擎)
  8. [转]linux解压 tar命令
  9. 电脑电视兼容成科技行业新课题
  10. .NET Core 2.1改进了性能,并提供了新的部署选项