Leetcode 24 两两交换链表中的节点(链表) null类型是无法调用null.next的,所以一定要在限制条件里面设置好

Leetcode 24 两两交换链表中的节点(链表)

    • :red_circle:null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死
    • :red_circle:null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死
    • :red_circle:null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死
    • 解法1 笨蛋归纳条件模拟法

Leetcode 24 两两交换链表中的节点(链表) null类型是无法调用null.next的,所以一定要在限制条件里面设置好_第1张图片


null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死

null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死

null类型是无法调用null.next的,所以一定要在限制条件里面设置好,限制死


解法1 笨蛋归纳条件模拟法

时间复杂度O(N)
空间复杂度O(1)
Leetcode 24 两两交换链表中的节点(链表) null类型是无法调用null.next的,所以一定要在限制条件里面设置好_第2张图片

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        if(head == null) return head;
        if(head.next == null) return head;
        
        ListNode pre = head;
        ListNode cur;
        ListNode temp;
        head = head.next;

        while(pre != null && pre.next != null){
            cur = pre.next;
            temp = pre.next.next;
            cur.next = pre;

            if(temp == null || temp.next == null){
                pre.next = temp;
                return head;
            } 
            else {
                pre.next =  temp.next;
                pre = temp;
            }    
        }return head;        
    }
}
  

你可能感兴趣的:(Leetcode,leetcode,链表,算法,java)