解法: 模拟
思路: 新建两个虚拟节点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
};