Swap Nodes in Pairs_Leetcode_#24

来源:互联网 发布:淘宝书批发 编辑:程序博客网 时间:2024/05/16 19:15

1 题目
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.

2 解法
时间复杂度:O(N)

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {        if(head == null || head.next == null){            return head;        }        ListNode pLeft = head;        ListNode pRight = head.next;        ListNode pHead = pRight;        ListNode pPre = pLeft;        while(pRight != null){            ListNode pTemp = pRight.next;            pPre.next = pRight;            pRight.next = pLeft;            pLeft.next = pTemp;             pPre = pLeft;            if(pTemp != null){                pLeft = pTemp;                pRight = pTemp.next;            }else{                break;            }        }        return pHead;        }}
0 0