題目
給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例:
給定 1->2->3->4, 你應該返回 2->1->4->3.
解題思路
沒啥思路,就是主要儲存前一次兩兩交換的最後節點
程式碼
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null) return head;
ListNode newHead = head.next;
ListNode pre = null;
while (head != null && head.next != null){
ListNode next = head.next;
if(pre != null){
pre.next = next;
}
head.next = next.next;
System.out.print(head.val);
next.next = head;
pre = head;
head = head.next;
}
return newHead;
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結