LeetCode-24:Swap Nodes in Pairs

来源:互联网 发布:在linux上安装vim 编辑:程序博客网 时间:2024/05/28 15:26

原题描述如下:

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.

题意将单链表中的元素两两对换。

解题思路:看代码。

Java代码:

/**
 * 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 temphead = new ListNode(0);
        temphead.next = head;
        
        ListNode tail = temphead;
        ListNode first = head;
        
        while(first != null && first.next != null){
            tail.next = first.next;
            first.next = first.next.next;
            tail.next.next = first;
            first = first.next;
            tail = tail.next.next;
        }
        
        return temphead.next;
    }
}
0 0
原创粉丝点击