leetcode-24-两两交换链表中的节点

118 阅读1分钟

image.png

leetcode原题

解题方法一

将链表转成数组,然后判断数组长度,可以得到是否可以两两交换

var swapPairs = function(head) {
    if (head === null) return null

    if (head.next === null) return head

    let arr = []
    let curr = head
    while (curr) {
        arr.push(curr.val)
        curr = curr.next
    }

    let len = arr.length

    let node = new ListNode()
    let p = node
    if (len%2 === 0) {
        for (let i = 0; i < len / 2; i++) {
            p.next = new ListNode(arr[i * 2 + 1])
            p = p.next
            p.next = new ListNode(arr[i * 2])
            p = p.next
            
        }
    } else {
        for (let i = 0; i < (len - 1) / 2; i++) {
            p.next = new ListNode(arr[i * 2 + 1])
            p = p.next
            p.next = new ListNode(arr[i * 2])
            p = p.next
            p.next = new ListNode(arr[i * 2 + 2])
        }
        
    }

    return node.next

};