重新排序红色,蓝色和绿色球的数组

gee*_*bat 5 sorting algorithm

在我的一次采访中,采访者问我 - 一些大小包含红色,蓝色和绿色的球都随机混在一起.像RGBBBRRGGG,其中RGB用于红色,绿色和蓝色.

什么是结束数组的最佳方式,如RRRFGGGBBBB,即所有R,所有G和所有B在一起.

我建议将所有红色,蓝色,绿色转换为ASCII值,然后在其上运行最有效的排序算法.但他没有留下深刻的印象.还有其他更有效的解决方案吗?空间和时间复杂度最低?

tim*_*rau 14

只需经过阵列和计数的产生R,GB分别.然后,输出字符串.线性时间.

  • Rody:这是排序(计数排序).OP选择"最有效的排序算法"的常见想法是正确的,但不精确. (2认同)

Bla*_*ace 9

面试官可能想知道你是否熟悉荷兰国旗问题.它有一个简单的线性解决方案.有C++Java维基百科页面上的例子.