leetcode 24 Swap Nodes in Pairs

題目詳情

Given a linked list, swap every two adjacent nodes and return its head.

題目要求輸入一個鏈表,咱們將相鄰的兩個節點的順序翻轉。最後返回頭節點。同時題目要求只能佔用常數空間,而且不能改變節點的值,改變的是節點自己的位置。node

例如,
輸入 1->2->3->4, 你應該返回的鏈表:2->1->4->3.spa

想法

  • 要求返回頭節點,所以咱們須要新建一個節點(dummy)指向頭節點,方便最後返回頭節點。
  • 翻轉是以兩個節點爲單位的,咱們新聲明一個節點current表示當前操做到的位置。每次操做結束,將current指針後移兩個節點便可。
  • 執行操做前要肯定操做的兩個節點不爲空。
  • 簡單畫了一下翻轉的過程
  • 圖片描述

解法

public ListNode swapPairs(ListNode head) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode current = dummy;
        
        while(current.next != null && current.next.next != null){
            ListNode first = current.next;
            ListNode second = current.next.next;
            
            first.next = second.next;
            second.next = first;
            current.next = second;
            current = current.next.next;
        }
        
        return dummy.next;
    }
相關文章
相關標籤/搜索