这题一开始我想成了逆序,然后写了之后才发现不对。于是就在想,后来我想到了下面的方法
首先求得1的个数k1和2的个数k2。然后我们对前k1个数进行操作,如果是排序好了的话,这前k1个数应该是1,如果是2的话,那么我们从第k2+1个数开始找1,找到第一个1后交换两个数(这样交换的次数是最少的)。如果是3的话,就从最后一个数往前找第一个1,然后交换两个数。同样这样交换的次数是最少的。对1操作完了之后,我们在对接下来的k2个数进行操作,如果不是2的话,就一定是3了,一定要交换。这样进行操作之后对后面的数就不用操作了,因为已经是排好序了的。
不过官方的我还没看贴下官方的报告吧
官方报告