题目:

有n个物体对象,分别为白色,蓝色,红色(此时顺序打乱),对其排列,使得相邻颜色相同,顺序为红白蓝。

示例:

例如:红-白-蓝-蓝-红-白,结果为红红-白白-蓝蓝

思路:

先给出第一种思路,还有一种思路暂时没有AC成功,不过很快了。

我的方法是从前往后迭代,只要颜色不为0,那就交换,这样子就把所有颜色为0的排列好,而且此时我还知道具体停止位置。同样的方法,继续排列颜色为1,颜色为2的。

再给出第二种思路,他的技巧在于遇到为1的不进行任何操作,遇到为0的则与把代表1的one往后挪一个,两者交换。同时,one与i基本保持一致,除非出现不是一种颜色的情况。

对于第三种颜色,更是一样,遇到他就和最后一个交换,同时记得将two-1;这种列子见得很少,是个非常好的解法。

代码:

 

 

1 收藏


直接登录