美文网首页
leetcode Swap Nodes in Pairs

leetcode Swap Nodes in Pairs

作者: 栾呱呱 | 来源:发表于2017-10-11 22:29 被阅读17次

题目

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;  
    }

相关文章

网友评论

      本文标题:leetcode Swap Nodes in Pairs

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