24. 兩兩交換連結串列中的節點 (中等)

zyfsuzy發表於2020-02-14

題目

給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例:

給定 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 協議》,轉載必須註明作者和本文連結

相關文章