leetcode24两两交换链表中的节点 快慢指针实现

问题描述:

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

上代码,拿去即可运行:

java 复制代码
package onlyqi.daydayupgo06.leetcode;

import lombok.AllArgsConstructor;
import lombok.Data;

public class Leetcode24 {
    public static void main(String[] args) {
        ListNode listNode6 = new ListNode(6, null);
        ListNode listNode5 = new ListNode(5, listNode6);
        ListNode listNode4 = new ListNode(4, listNode5);
        ListNode listNode3 = new ListNode(3, listNode4);
        ListNode listNode2 = new ListNode(2, listNode3);
        ListNode listNode1 = new ListNode(1, listNode2);
        ListNode listNode = swapPairs(listNode1);

        while (listNode != null) {
            System.out.print(listNode.val + "   ");
            listNode = listNode.next;
        }
    }


    public static ListNode swapPairs(ListNode listNode) {
        ListNode dummy = new ListNode(0, listNode);
        ListNode pre = dummy;

        while (pre.next != null && pre.next.next != null) {
            ListNode first = pre.next;
            ListNode second = pre.next.next;


            first.next=second.next;
            second.next=first;
            pre.next=second;

            pre=first;

        }

        return dummy.next;
    }

    @Data
    @AllArgsConstructor
    static class ListNode {
        int val;
        ListNode next;


    }
}

运行结果:

我要刷300道算法题,第150道 。 尽快刷到200,每天搞一道 。

相关推荐
I_LPL14 小时前
hot100 栈专题
算法·
此生只爱蛋14 小时前
【数据结构】红黑树
数据结构
2401_8795034115 小时前
C++中的观察者模式变体
开发语言·c++·算法
阿贵---15 小时前
C++中的备忘录模式
开发语言·c++·算法
setmoon21415 小时前
C++中的观察者模式实战
开发语言·c++·算法
2403_8355684715 小时前
C++代码规范化工具
开发语言·c++·算法
tankeven15 小时前
HJ138 在树上游玩
c++·算法
北顾笙98015 小时前
测开准备-day01数据结构力扣
数据结构
lihihi16 小时前
P1209 [USACO1.3] 修理牛棚 Barn Repair
算法
博界IT精灵16 小时前
栈在表达式求值中的应用(暂时看到视频3.3.2_1的25min19秒)
数据结构