文档章节

成对的交换链表的节点 Swap Nodes in Pairs

叶枫啦啦
 叶枫啦啦
发布于 2017/09/02 14:04
字数 246
阅读 5
收藏 0

问题:

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.

解决:

① 直接交换即可。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution { //4ms
    public ListNode swapPairs(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode slow = head;
        ListNode fast = head.next;
        while(fast != null && fast.next != null && fast.next.next != null){//避免空指针异常
            int tmp = slow.val;
            slow.val = fast.val;
            fast.val = tmp;
            slow = fast.next;
            fast = slow.next;
        }
        int tmp = slow.val;//处理最后两个数
        slow.val = fast.val;
        fast.val = tmp;
        return head;
    }
}

② 

class Solution {//5ms
    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) return head;
        ListNode header = new ListNode(-1);
        header.next = head;
        ListNode cur = header;
        ListNode slow = head;
        ListNode fast = head.next;
        while(slow != null && fast != null){
            slow.next = fast.next;
            fast.next = slow;
            cur.next = fast;
            cur = slow;
            slow = slow.next;
            if(slow != null)fast = slow.next;
        }
        return header.next;
    }
}

© 著作权归作者所有

叶枫啦啦
粉丝 16
博文 583
码字总数 400448
作品 0
海淀
私信 提问
成对交换单链表的结点

原题   Given a linked list, swap every two adjacent nodes and return its head.   For example,   Given , you should return the list as .   Your algorithm should use only ......

一贱书生
2016/12/13
81
0
【LeetCode】Swap Nodes in Pairs(两两交换链表中的节点)

这是LeetCode里的第24题。 题目要求: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定1->2->3->4, 你应该返回2->1->4->3. 说明: 你的算法只能使用常数的额外空间。...

1000sakura
2018/12/01
0
0
LeetCode 24 Swap Nodes in Pairs(交换序列中的结点)(Linked List)

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/49803287 翻译 原文 分析 先来看看如何交换两个节点吧~ 也以“...

nomasp
2015/11/12
0
0
Linked List相关的题

237. Delete Node in a Linked List 这题跟正常的书里的删链表某个节点区别是传入的参数,书里函数输入是要删的那个节点的前一个节点,这题里给的函数输入就是要删的那个节点。 /** Definiti...

wcybrain
2017/10/31
0
0
玩转算法面试:(五)LeetCode链表类问题

在链表中穿针引线 链表和数组都是线性结构,但是链表和数组的不同在于数组可以随机的对于数据进行访问。给出索引。可以以O(1)的时间复杂度迅速访问到该元素。 链表只能从头指针开始。 next指...

天涯明月笙
2017/09/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

x002-语言元素

变量命令规则 硬性规则: 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。 大小写敏感(大写的a和小写的A是两个不同的变量)。 不要跟关键字(有特殊...

伟大源于勇敢的开始
今天
4
0
nginx反向代理配置

nginx配置文件位置/usr/local/nginx/conf/nginx.conf 配置文件修改: # cd /usr/local/nginx/conf # vim nginx.conf server {listen 80;server_name localhost;#charset k......

行者终成事
今天
5
0
OSChina 周日乱弹 —— 这是假的,和我之前的不一样

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《男孩》-梁博 / 陶孟童 / 肖和东 / 高誉容 《男孩》-梁博 / 陶孟童 / 肖和东 / 高誉容 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
8
0
Rust学习笔记一 数据类型

写在前面 我也不是什么特别厉害的大牛,学历也很低,只是对一些新语言比较感兴趣,接触过的语言不算多也不算少,大部分也都浅尝辄止,所以理解上可能会有一些偏差。 自学了Java、Kotlin、Python、...

MusiCodeXY
今天
5
0
Java 脚本引擎入门

Java Script Engine Java 脚本引擎可以将脚本嵌入Java代码中,可以自定义和扩展Java应用程序,自JDK1.6被引入,基于Rhino引擎,JDK1.8后使用Nashorn引擎,支持ECMAScript 5,但后期还可能会换...

阿提说说
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部