トピック:
アレイNUMS不規則に与えられ、それはNUMS [0] <NUMS [1]> NUMS [2] <NUMS [3] ...順序を並び替えます。
例1:
入力:NUMS = [1、5、 1、1、6,4]
出力:一つの可能な答えである[1、4、1、5、1、6]
実施例2:
入力:NUMSの= [1、3、 2、2、3、1]
出力:可能な答えがある[2、3、1、3、1、2]
注意:
あなたはすべての入力が有効な結果であると仮定することができます。
問題解決:
クラスソリューション{ / ** *最初にソートした後、挿入 * O(nlogn)+ O(N)= O(nlogn) * * @param NUMS * / 公共 ボイド wiggleSort(INT [] NUMS){ // ソート は、Arrays.sortを( NUMS); INT LEN = nums.length、I = 0 ; int型 [] =より小さい新しい新しい INT [%2 == 0 LEN LEN / 2 :?(LEN / + 2.1)] =ビガー新しい新しい INT [LEN / 2 ]; // 大きなアレイより小さな割り当てとコピー、 System.arraycopyの(NUMS、0より小さい、0 、smaller.length)。 System.arraycopyの(NUMS、smaller.length、大きく、 0/2でlen )。 // 穿插 ため(; I / 2 lenの<; iは++ ){ NUMS [ 2 * I] =小さい[smaller.length - 1 - I]; NUMS [ 2 * I + 1] =大きい[lenの/ 2 - 1 - I]; } であれば(LEN%2 = 0!)NUMS [2 * I] =小さい[smaller.length - 1 - I]; } }