C++程序 对0、1、2形式的链表进行排序
给出一个由0、1和2组成的链表,请将其排序。
示例:
输入: 1->1->2->0->2->0->1->NULL
输出: 0->0->1->1->1->2->2->NULL
输入: 1->1->2->1->0->NULL
输出: 0->1->1->1->2->NULL
可以使用以下步骤来对给定的链表进行排序。
- 遍历该列表,并计算0、1和2的数量。让n1、n2和n3分别为计数。
- 再次遍历列表,用0填充前n1个节点,然后用1填充n2个节点,最后用2填充n3个节点。
下面的图形化解释以上过程:
下面是以上方法的实现:
输出:
时间复杂度: O(n),其中n是链表中节点的数量。
辅助空间: O(1)