【Leetcode】86.分隔链表

40 阅读1分钟

leetcode-86.png

链表的重组
按照给定规则的重组,小的放前面,大的放后面

这类题目要返回链表,一定要注意弄一个头节点,这样才能进行下去
由这个实现,让我想到了,可以利用这个方法对链表进行排序(但貌似,也不是很好弄)

var partition = function (head, x) {
    let small = new ListNode(-1)
    let big = new ListNode(-1)
    // 留存各自头节点,方便后面进行衔接(bigH)以及返回结果(smallH)
    let smallH = small, bigH = big
    while (head) {
        if (head.val < x) {
            // 小的给small进行衔接
            small.next = head
            small = small.next
        } else {
            // 大的给big进行衔接
            big.next = head
            big = big.next
        }
        head = head.next
    }
    // 尾节点置空
    big.next = null
    // 小的链表与大的链表进行衔接
    small.next = bigH.next
    return smallH.next
};