leetcode Swap Nodes in Pairs

来源:互联网 发布:哈尔斯保温杯知乎 编辑:程序博客网 时间:2024/06/06 19:30

题目:

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

解题思路:

利用三个指针实现,p1为每对pair里面的前一个数,p2为后一个数。

代码:

public ListNode swapPairs(ListNode head) {        if (head == null || head.next == null)            return head;        ListNode prev = head;        ListNode p1 = head;        ListNode p2;        while (p1 != null && p1.next != null) {            p2 = p1.next;            p1.next = p2.next;            p2.next = p1;            if (prev == head)                head = p2;            else                prev.next = p2;            prev = p1;            p1 = p1.next;        }        return head;    }



0 0