【路飞】leetcode 86 分割链表

380 阅读1分钟

解法: 模拟

思路: 新建两个虚拟节点small,large ,和他们的头指针smallHead, largeHead.遍历链表,如果当前节点的值小于X,就存到small链表里,否则就存入large链表里,最后断开large链表剩余节点,并将之拼接到small链表的尾部,返回small链表

var partition = function(head, x) {
    let small = new ListNode(-1)
    let smallHead = small
    let large = new ListNode(-1)
    let largeHead = large
    while (head) {
        if (head.val < x) {
            small.next = head
            small = small.next
        } else {
            large.next = head
            large = large.next
        }
        head = head.next
    }
    large.next = null
    small.next = largeHead.next
    return smallHead.next
};