0
点赞
收藏
分享

微信扫一扫

两两交换链表中的结点(SwapNodesInPairs) Leetcode 05

有态度的萌狮子 2022-01-22 阅读 44

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

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

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

迭代算法: 利用了一个哑结点,以及node1,node2 两个辅助结点

 class Solution {
        public ListNode swapPairs(ListNode head) {
            ListNode dummyHead = new ListNode(0);
            dummyHead.next = head;
            ListNode temp = dummyHead;
            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;                   //最后更新一下tem指针
            }
            return dummyHead.next;
        }
    }

原创禁止转载!!!

举报

相关推荐

0 条评论