1195 字
约 3 分钟
6
LeetCode刷题Java版024.两两交换链表中的节点
无标签

LeetCode刷题Java版024.两两交换链表中的节点

作者:沉默王二
发布时间:2022-08-11T23:38:11.834+0800


024.两两交换链表中的节点

题意

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

难度

中等

示例

输入:head = [1,2,3,4]

输出:[2,1,4,3]

分析

我们学过了链表节点的插入和链表节点的删除,其实想一想,链表节点的两两交换也是一样的道理,我们以较为简单的,仅仅含有三个节点的链表为例,我们来模拟一遍。

然后用代码描述出来:

/**

* * 定义一个简单的链表.*

* * public class ListNode {*

* *     int val;*

* *     ListNode next;*

* *     ListNode() {}*

* *     ListNode(int val) { this.val  = val; }*

* *     ListNode(int val, ListNode next) { this.val  = val; this.next  = next; }*

* * }*

* /

public class Solution {

    public ListNode swapPairs(ListNode nowPos) {

        if(nowPos == null || nowPos.next  == null)

            return nowPos;

        // 新节点复制 nowPos.next  (防止之后的修改被覆盖掉,从而丢失)

        ListNode newNode = nowPos.next ;

        //更改nowPos.next 的信息

        nowPos.next  = swapPairs(newNode.next );

        //修改newNode(原nowPos.next )的信息,完成交换,同时原本的nowPos.next 彻底被替换

        newNode.next  = nowPos;

        return newNode;

    }

}

完美解决

总结

其实有关链表的相关题目,最重要的切入角度,就是理清楚节点之间的关系,然后在纸上画一画,切莫一个劲的只靠脑子不靠笔,往往思考了很久的问题,动动笔,其实就豁然开朗,而在实现的时候则注重一一对应,用代码准确的描述出你的思路,这样子链表的问题便迎刃而解。

力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/

024.两两交换链表中的节点

题意

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

难度

中等

示例

输入:head = [1,2,3,4]

输出:[2,1,4,3]

分析

我们学过了链表节点的插入和链表节点的删除,其实想一想,链表节点的两两交换也是一样的道理,我们以较为简单的,仅仅含有三个节点的链表为例,我们来模拟一遍。

然后用代码描述出来:

/**

* * 定义一个简单的链表.*

* * public class ListNode {*

* *     int val;*

* *     ListNode next;*

* *     ListNode() {}*

* *     ListNode(int val) { this.val  = val; }*

* *     ListNode(int val, ListNode next) { this.val  = val; this.next  = next; }*

* * }*

* /

public class Solution {

    public ListNode swapPairs(ListNode nowPos) {

        if(nowPos == null || nowPos.next  == null)

            return nowPos;

        // 新节点复制 nowPos.next  (防止之后的修改被覆盖掉,从而丢失)

        ListNode newNode = nowPos.next ;

        //更改nowPos.next 的信息

        nowPos.next  = swapPairs(newNode.next );

        //修改newNode(原nowPos.next )的信息,完成交换,同时原本的nowPos.next 彻底被替换

        newNode.next  = nowPos;

        return newNode;

    }

}

完美解决

总结

其实有关链表的相关题目,最重要的切入角度,就是理清楚节点之间的关系,然后在纸上画一画,切莫一个劲的只靠脑子不靠笔,往往思考了很久的问题,动动笔,其实就豁然开朗,而在实现的时候则注重一一对应,用代码准确的描述出你的思路,这样子链表的问题便迎刃而解。

力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/

024.两两交换链表中的节点

题意

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

难度

中等

示例

输入:head = [1,2,3,4]

输出:[2,1,4,3]

分析

我们学过了链表节点的插入和链表节点的删除,其实想一想,链表节点的两两交换也是一样的道理,我们以较为简单的,仅仅含有三个节点的链表为例,我们来模拟一遍。

然后用代码描述出来:

/**

* * 定义一个简单的链表.*

* * public class ListNode {*

* *     int val;*

* *     ListNode next;*

* *     ListNode() {}*

* *     ListNode(int val) { this.val  = val; }*

* *     ListNode(int val, ListNode next) { this.val  = val; this.next  = next; }*

* * }*

* /

public class Solution {

    public ListNode swapPairs(ListNode nowPos) {

        if(nowPos == null || nowPos.next  == null)

            return nowPos;

        // 新节点复制 nowPos.next  (防止之后的修改被覆盖掉,从而丢失)

        ListNode newNode = nowPos.next ;

        //更改nowPos.next 的信息

        nowPos.next  = swapPairs(newNode.next );

        //修改newNode(原nowPos.next )的信息,完成交换,同时原本的nowPos.next 彻底被替换

        newNode.next  = nowPos;

        return newNode;

    }

}

完美解决

总结

其实有关链表的相关题目,最重要的切入角度,就是理清楚节点之间的关系,然后在纸上画一画,切莫一个劲的只靠脑子不靠笔,往往思考了很久的问题,动动笔,其实就豁然开朗,而在实现的时候则注重一一对应,用代码准确的描述出你的思路,这样子链表的问题便迎刃而解。

力扣链接:https://leetcode.cn/problems/swap-nodes-in-pairs/

            知识星球
            
    
    
        
        扫码加入星球
        查看更多优质内容
    
    https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412
LeetCode刷题Java版024.两两交换链表中的节点
https://clxhxhhr.top/posts/2487/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。