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

题目描述

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

示例 1:

复制代码
输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

复制代码
输入:head = []
输出:[]

示例 3:

复制代码
输入:head = [1]
输出:[1]

提示:

  • 链表中节点的数目在范围 [0, 100]
  • 0 <= Node.val <= 100

解题思路

注意prev指针要正确指向下一组nextPair

代码

java 复制代码
/**
 * Definition for singly-linked list.
 * 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; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode cur = head;
        // 边缘条件判断
        if(head == null || cur.next == null){
            return head;
        }
        // 重置头结点
        head = cur.next;
        // 记录下一组
        ListNode nextPair = cur.next.next;
        // 记录prev指针
        ListNode prev = cur;
        cur.next.next = cur;
        cur.next = nextPair;
        // 跳至下一组
        cur = nextPair;

        // 若组不成一组不需要反转
        while(nextPair != null && cur.next != null){
            prev.next = cur.next;
            prev = cur;
            nextPair = cur.next.next;
            cur.next.next = cur;
            cur.next = nextPair;
            cur = nextPair;
        }

        return head;
    }
}
相关推荐
香香甜甜的辣椒炒肉6 分钟前
Spring JDBC 万能模板
java·后端·spring
liaowenxiong9 分钟前
实现类和接口的关系
java
W230357657310 分钟前
回溯法经典实战:0/1 全排列与 N 皇后问题(递归 + 非递归双实现)
算法·回溯法·n皇后
编程迪12 分钟前
基于Java和uniapp开发的名片交换分享系统企业名片管理软件个人电子名片小程序源码
java·uni-app·电子名片·名片小程序·名片软件源码
开开心心就好13 分钟前
经典塔防游戏移植移动端随时畅玩
java·前端·科技·游戏·edge·django·pdf
圣保罗的大教堂19 分钟前
leetcode 3653. 区间乘法查询后的异或 I 中等
leetcode
圣保罗的大教堂19 分钟前
leetcode 1848. 到目标元素的最小距离 简单
leetcode
YuanDaima204824 分钟前
队列与单调队列基础原理与题目说明
人工智能·python·算法·leetcode·队列·手撕代码
ZPC821025 分钟前
moveit servo 发指令给real arm
java·前端·数据库
企微增长观察25 分钟前
企业微信怎么注册?2026年完整注册流程
java·人工智能·企业微信