题目:

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

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.
这个题不是简单的数字交换,而是节点之间的交换。
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode tmp =new ListNode(0); //申请一个空的节点
tmp.next = head; //让链表的头节点指向那个空节点的下一个节点 ListNode temp = tmp; //把这个空节点保存下来,用这个变量去完成交换
while(head != null && head.next !=null){
temp.next = head.next;
head.next = temp.next.next;
temp.next.next = head;
temp = temp.next.next; //当上面交换完了后,temp向后移两个节点。
head = temp.next;
}
return tmp.next; //返回空节点之后已经交换完了的链表
}
}

法二:

把节点一个一个取出来,两个两个一交换,用递归实现,

代码如下:

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode res = head.next; //找到交换节点的下一个
ListNode temp = swapPairs(head.next.next); //需要移动头部
res.next = head; //交换
head.next = temp; //头部移动到下一组 return res;
}
}
 

两两交换链表中的节点(java实现)的更多相关文章

  1. LeetCode--024--两两交换链表中的节点(java)

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

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

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

  3. lintcode-451-两两交换链表中的节点

    451-两两交换链表中的节点 给一个链表,两两交换其中的节点,然后返回交换后的链表. 样例 给出 1->2->3->4, 你应该返回的链表是 2->1->4->3. ...

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

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

  5. LeetCode 24. 两两交换链表中的节点(Swap Nodes in Pairs)

    题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能 ...

  6. leetcode 24. 两两交换链表中的节点 及 25. K 个一组翻转链表

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

  7. LeetCode-024-两两交换链表中的节点

    两两交换链表中的节点 题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例说明请见LeetCode官网. 来源:力 ...

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

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

  9. 【Leetcode链表】两两交换链表中的节点(24)

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

随机推荐

  1. Mac截图操作,自定义快捷键

    选择system preferences 下面能看到系统定义的快捷键,可以自己修改

  2. webpack基础小结。

    想写写webpack的学习体验的小结,加深自己的理解和使用技能,顺便过一下文档(4.0的功能感觉还是满好玩的). 本文主简写描述webpack中对各种文件的简单处理 基本知识点 处理js 加载css文 ...

  3. php实现栈操作(不用push pop 库函数)

    直接上代码 <?php /*php不用库函数实现栈操作 * @author Geyaru 2019-04-20 */ class stack{ private $top = -1; //栈指针初 ...

  4. 放弃antd table,基于React手写一个虚拟滚动的表格

    缘起 标题有点夸张,并不是完全放弃antd-table,毕竟在react的生态圈里,对国人来说,比较好用的PC端组件库,也就antd了.即便经历了2018年圣诞彩蛋事件,antd的使用者也不仅不减,反 ...

  5. python运算符和数据类型的可变性

    一.运算符 计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算. 种类:算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们先了解前四个. 算术运 ...

  6. windows中启动和终止nginx的两个批处理

    文件:start_nginx.bat 内容: set nginx=D:\nginx-1.9.5\set php=D:\php\start /MIN %nginx%nginx.exestart /MIN ...

  7. eclipse 搭建maven项目

    最近重新搭建项目把日常用到的东西都记录一下. 创建maven项目(maven4.4以后都自带maven了)   1,创建一个Maven parent  主要是各个项目之间的依赖 使用eclipse 创 ...

  8. C#WFM关于PICBOX 再DIP界面放大125%后,图片显示不完整

    外观哪里选中Zoom,就好

  9. python中split()的用法

    Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串. 语法: str.split(str="", num=str ...

  10. 【shell】awk按域去除重复行

    首先解释一下什么叫“按域去除重复行”: 有的时候我们需要去除的重复行并不是整行都重复,两行的其中一列的元素相同我们有的时候就需要认定这两行重复,因此有了今天的内容. 去除重复行shell有一个原生命令 ...