這題一開始我想成了逆序,然后寫了之后才發現不對。于是就在想,后來我想到了下面的方法
首先求得1的個數k1和2的個數k2。然后我們對前k1個數進行操作,如果是排序好了的話,這前k1個數應該是1,如果是2的話,那么我們從第k2+1個數開始找1,找到第一個1后交換兩個數(這樣交換的次數是最少的)。如果是3的話,就從最后一個數往前找第一個1,然后交換兩個數。同樣這樣交換的次數是最少的。對1操作完了之后,我們在對接下來的k2個數進行操作,如果不是2的話,就一定是3了,一定要交換。這樣進行操作之后對后面的數就不用操作了,因為已經是排好序了的。
不過官方的我還沒看貼下官方的報告吧
官方報告