题意:给定一个链表,要求两两交换节点,返回头节点。
24. Swap Nodes in Pairs (opens new window)
比较简单的链表操作,两两交换即可。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
// 在head前添加一个节点,方便后续的操作
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
ListNode left = head;
ListNode right;
// a -> b -> c -> d
// prev left right
// a -> c -> b -> d
while (left != null && left.next != null) {
right = left.next;
prev.next = right;
left.next = right.next;
right.next = left;
prev = left;
left = left.next;
}
return dummy.next;
}
}