Skip to content

📚 4.两两交换链表中的节点

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/swap-nodes-in-pairs/description/
 */

class ListNode {
    val: number
    next: ListNode | null
    constructor(val?: number, next?: null) {
        this.val = val === undefined ? 0 : val
        this.next = next === undefined ? null : next
    }
}
export {}

function swapPairs(head: ListNode | null): ListNode | null {
    if (!head) return null
    if (!head.next) return head
    let vitrualNode: ListNode | null = new ListNode(0)
    vitrualNode.next = head
    let cur: ListNode | null = vitrualNode
    while (cur && cur.next && cur.next.next) {
        let p = cur.next,
            q = cur.next.next
        p.next = q.next
        q.next = p
        cur.next = q
        cur = cur.next!.next
    }
    return vitrualNode.next
}

// notice 要思考一个节点换位后前后关联的关系

Released under the MIT License.