[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;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_36869329/article/details/84502446