Wednesday, January 22, 2014

Swap Nodes in Pairs LeetCode

我最怕就是linkedlist的题,绕一绕就把我绕糊涂了。这个题比较简单,一共就两个节点换。

第一开始用recursion 的方法写了一下,顺利通过。
第二次用iterative的方法写了一下,出了点小问题。经改正顺利通过。

纯实现题,无思路可言。
Recursive
public ListNode swapPairs(ListNode head) {
        if (head == null) return null;
        else if (head.next == null) return head;
        else {
            ListNode nextHead = swapPairs(head.next.next);
            ListNode temp = head.next;
            head.next = nextHead;
            temp.next = head;
            return temp;
        }
    }

Iterative
public ListNode swapPairs(ListNode head) {
        ListNode dummy = new ListNode(-1);
        ListNode prev = dummy;
        ListNode curr = head;
        prev.next = head;
       
        while (curr!=null && curr.next!=null){
            ListNode nextHead = curr.next.next;
            prev.next = curr.next;
            curr.next.next = curr;
            curr.next = nextHead;
            prev = curr;
            curr = nextHead;
        }
        return dummy.next;
    }

No comments:

Post a Comment