1. 程式人生 > >[leetcode]24. Swap Nodes in Pairs

[leetcode]24. Swap Nodes in Pairs

這題感覺沒什麼怎麼就medium了。


  • 臨時加上一個空的頭結點,方便迴圈處理。
ListNode m=new ListNode(-1);
        m.next=head;
        head=m;
  • m是要交換的兩個節點的前驅
    p是要交換的第一個,q是要交換的第二個

  • 處理奇數情況,如果p是最後一個節點,則q是null,這樣就不用交換 ,直接break跳出迴圈

 if(q==null)break;
/**
 * 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)return null;
        
        ListNode m=new ListNode(-1);
        m.next=head;
        head=m;
        
        ListNode p=m.next;
        ListNode q=p.next;
        
        while(p!=null){
            
            q=p.next;
            
            if(q==null)break;
            
            m.next=q;
            p.next=q.next;
            q.next=p;
            m=p;
            p=p.next;
            
        }
        return head.next;
    }
}