用于对 0、1 和 2 的链表进行排序的 Javascript 程序
给定一个由 0、1 和 2 组成的链表,对它进行排序。
例子:
Input: 1 -> 1 -> 2 -> 0 -> 2 -> 0 -> 1 -> NULL
Output: 0 -> 0 -> 1 -> 1 -> 1 -> 2 -> 2 -> NULL
Input: 1 -> 1 -> 2 -> 1 -> 0 -> NULL
Output: 0 -> 1 -> 1 -> 1 -> 2 -> NULL
来源:微软专访 |设置 1
以下步骤可用于对给定的链表进行排序。
- 遍历列表,统计0、1、2的个数。设计数分别为 n1、n2 和 n3。
- 再次遍历列表,前 n1 个节点用 0 填充,然后 n2 个节点用 1 填充,最后 n3 个节点用 2 填充。
下图是上述方法的试运行:
下面是上述方法的实现:
Javascript
输出:
Linked List Before Sorting
2 1 2 1 1 2 0 1 0
Linked List After Sorting
0 0 1 1 1 1 2 2 2
时间复杂度: O(n),其中 n 是链表中的节点数。
辅助空间: O(1)
请参阅完整的文章对 0s、1s 和 2s 的链表进行排序以获取更多详细信息!