您的位置:首页 > Web前端 > Node.js

LeetCode Swap Nodes in Pairs

2015-08-29 21:51 489 查看
原题链接在这里:https://leetcode.com/problems/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 may not modify the values in the list, only nodes itself can be changed.

题解:

需要建一个dunmy,最后return dunmy.next. 如此可以避免边界问题的讨论,例如头两个点的转换。

Time Complexity: O(n), n是list的长度. Space: O(1).

AC 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 dummy = new ListNode(0);
dummy.next = head;

ListNode mark = dummy;
ListNode A;
ListNode B;
while(mark.next != null && mark.next.next != null){
A = mark.next;
B = mark.next.next;
A.next = B.next;
B.next = A;
mark.next = B;
mark = mark.next.next;
}
return dummy.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: