(java)leetcode-24

来源:互联网 发布:c指针数组赋值 编辑:程序博客网 时间:2024/06/06 02:32

Swap Nodes in Pairs

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 maynot modify the values in the list, only nodes itself can be changed.


解题思路:

就是不断地交换相邻两个节点的next,不断循环下去直到结束,记得就是在交换当前两个节点的next(例如k跟k+1)时,记得更新k-1的next。


/** * 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;        //当前节点k        ListNode p = head;        //下一节点k+1        ListNode q = head.next;        //记录上一节点k-1        ListNode r = null;        head = q;        while(p != null && q != null)        {            //交换next        p.next = q.next;        q.next = p;        //更新上一节点的next        if(r != null)        r.next = q;        //更新节点        r = p;        p = p.next;        if(p != null)        q = p.next;        }        return head;    }}


0 0