[Leetcode] Swap Nodes in Pairs (Java)

来源:互联网 发布:怎么加盟淘宝实体店 编辑:程序博客网 时间:2024/06/14 07:08

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.

头脑发热,保存了好多的中间ListNode变量。。

public class SwapNodesinPairs {static class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}}    public ListNode swapPairs(ListNode head) {    if(head==null)    return null;        ListNode index = head;        int k=0;        while(index!=null){        k++;        index=index.next;        }        index = head;        ListNode res = new ListNode(-1);        res.next = head;        if(k%2==0){        ListNode pre = null;        ListNode post = null;        ListNode temp = res;        while(index!=null){        pre = index;        post = index.next;        index = index.next.next;        temp.next = post;        post.next = pre;        pre.next = index;        temp = pre;        }        }else {        ListNode pre = null;        ListNode post = null;        ListNode temp =res;        while(index.next!=null){        pre = index;        post = index.next;        index = index.next.next;        if(index!=null) {        temp.next= post;        post.next = pre;        pre.next = index;        temp = pre;        }        }        }        return res.next;    }    public static void main(String[] args) {ListNode head = new ListNode(1);ListNode l2 = new ListNode(2);head.next = l2;head = new SwapNodesinPairs().swapPairs(head);System.out.print(head.val);head=head.next;while(head!=null) {System.out.print("->"+head.val);head=head.next;}}}


0 0
原创粉丝点击