[编程题] 合并两个有序链表

class ListNode {
    value: number
    next: ListNode | null

    constructor(value: number = 0, next: ListNode | null = null) {
        this.value = value
        this.next = next
    }

    setNext(node: ListNode) {
        this.next = node
    }
}

const node1 = new ListNode(1)
const node2 = new ListNode(3)
const node3 = new ListNode(5)
const node4 = new ListNode(2)
const node5 = new ListNode(4)
const node6 = new ListNode(6)

node1.setNext(node2)
node2.setNext(node3)
console.log(node1) // 1 3 5

node4.setNext(node5)
node5.setNext(node6)
console.log(node4) // 2 4 6
function mergeSorted(l1: ListNode | null, l2: ListNode | null): ListNode | null {
    if (l1 === null) return l2
    if (l2 === null) return l1
    if (l1.value < l2.value) {
        l1.next = mergeSorted(l1.next, l2)
        return l1
    } else {
        l2.next = mergeSorted(l1, l2.next)
        return l2
    }
}

console.log(mergeSorted(node1, node4)) // 1 2 3 4 5 6
posted @ 2022-09-13 22:36  toddforsure  阅读(10)  评论(0)    收藏  举报