# 分隔链表
参考官方的解法:直观来说我们只需维护两个链表 small 和 large 即可,small 链表按顺序存储所有小于 xxx 的节点,large 链表按顺序存储所有大于等于 xxx 的节点。遍历完原链表后,我们只要将 small 链表尾节点指向 large 链表的头节点即能完成对链表的分隔。
var partition = function (head, x) {
let small = new ListNode(0)
const smallHead = small
let large = new ListNode(0)
const largeHead = large
while (head !== null) {
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
}
备注:链表的题发现会先创建一个空节点,然后以此开始处理链接将节点加入到这个新的链表中,最后返回这个链表的头节点的下一个节点。
# 参考
← 合并两个有序链表 142.环形链表 II →