欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode刷题24(两两交换链表中的节点)

程序员文章站 2022-03-13 12:58:17
...

题目描述:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

通过答案:

/**
 * Definition for singly-linked list.             //递归
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head==null||head.next==null){         //当头结点为空或者只有一个节点时,不需要交换,直接返回
            return head;
        }
        ListNode first=head;        //第一个节点指向首节点
        ListNode second=first.next;     //第二个节点指向首节点的下一个节点
        first.next=swapPairs(second.next);     //递归进行交换节点
        second.next=first;      
        return second;      //返回结果
    }
}

示意图:

Leetcode刷题24(两两交换链表中的节点)

参考博文:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/hua-jie-suan-fa-24-liang-liang-jiao-huan-lian-biao/