首页 > 其他分享 >Leetcode24. 两两交换链表中的节点

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

时间:2023-03-10 17:36:03浏览次数:47  
标签:head ListNode val next 链表 Leetcode24 节点

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

 

思路:使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。

接下来就是交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序

初始时,cur指向虚拟头结点,然后进行如下三步:

 

/**
class ListNode{
    int val;
    ListNode next;
    public ListNode(int val){
        this.val = val;
    }
    public ListNode(int val,ListNode9 next){
        this.val = val;
        this.next = next;
    }
}*/
class Solution{
    public ListNode swapPairs(ListNode head){
        if(head == null || head.next == null) return head;
        //获取当前节点的下一个节点
        ListNode next = head.next;
        //进行递归
        ListNode newNode = swapPairs(next.next);
        //进行交换
        next.next = head;
        head.next = newNode;
        return next;
    }
}

  

标签:head,ListNode,val,next,链表,Leetcode24,节点
From: https://www.cnblogs.com/zhz123567/p/17204119.html

相关文章