📅  最后修改于: 2023-12-03 15:11:16.623000             🧑  作者: Mango
这是一个用于对0、1和2的链表进行排序的 Javascript 程序。该程序可以很容易地将一个包含 0、1 和 2 的链表按照升序重新排序。
该程序在链表中遍历每个节点,并在遍历的过程中计算每个元素出现的次数。然后,根据这些计数,重新构造链表。
function sortLinkedList(head) {
const count = { 0: 0, 1: 0, 2: 0 };
let current = head;
while (current !== null) {
count[current.val]++;
current = current.next;
}
current = head;
for (let i = 0; i < 3; i++) {
let j = count[i];
while (j > 0) {
current.val = i;
current = current.next;
j--;
}
}
return head;
}
// 创建链表
const head = { val: 2, next: { val: 1, next: { val: 0, next: null } } };
// 排序链表
const sorted = sortLinkedList(head);
// 打印排序后的链表
console.log(sorted); // { val: 0, next: { val: 1, next: { val: 2, next: null } } }
这是一个简单但实用的算法,可以有效地对包含 0、1 和 2 的链表进行排序。该算法的时间复杂度为 O(n),空间复杂度为 O(1)。