美文网首页算法
LeetCode题解:两两交换链表中的节点

LeetCode题解:两两交换链表中的节点

作者: 搬码人 | 来源:发表于2022-03-09 21:42 被阅读0次

    题目描述

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

    示例

    示例

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

    思路方法

    递归

    /**
     * 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) {
            if(head==null||head.next==null){
                return head;
            }
            ListNode NewHead = head.next;
            head.next = swapPairs(NewHead.next);
            NewHead.next = head;
            return NewHead;
        }
    }
    

    复杂度分析

    • 时间复杂度:O(n),其中n是链表的节点数目。需要对每个节点进行更新指针的操作。
    • 空间复杂度:O(n),其中n是链表的节点数目。空间复杂度主要取决于递归调用的栈空间。

    迭代

    image.png
    /**
     * 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 dummyNode = new ListNode(0);
            dummyNode.next = head;
            ListNode temp = dummyNode;
            while(temp.next!=null&&temp.next.next!=null){
                ListNode node1 = temp.next;
                ListNode node2 = temp.next.next;
                temp.next = node2;
                node1.next = node2.next;
                node2.next = node1;
                temp = node1;
            }
            return dummyNode.next;
        }
    }
    

    复杂度分析

    • 时间复杂度:O(n),其中n是链表的借点数目。需要对每个节点进行更新指针的操作。
    • 空间复杂度:O(1)。

    相关文章

      网友评论

        本文标题:LeetCode题解:两两交换链表中的节点

        本文链接:https://www.haomeiwen.com/subject/nrlxdrtx.html