LeetCode 32.メイク配列のみ最小単位

タイトル説明

整数Aの配列を指定し、任意の操作を選択し[i]を各Aを移動させ、その1をインクリメントします。

操作の最小数のそれぞれの戻り値は一意です。

例1:

入力:[1,2,2]
出力:1つの
説明:移動操作後、アレイになる[1、2、3]。
例2:

入力:[3,2,1,2,1,7]
出力:6
説明:6移動操作後、アレイになる[3、4、1、2、5、7]。
以下は、5回または5回の動作は、アレイの各固有の値については不可能である移動見ることができます。
ヒント:

0 <= A.length <= 40000
0 <= A [i]が<40000

 

問題解決のためのアイデア

1.先排序
2.遍历数组,若当前元素小于等于它的前一个元素,则将其变为前一个数+1

3.复杂度O(nlogn)

コードは以下の通りです

パッケージleetcode。

輸入java.util.Arrays。

パブリック クラスMinIncrementForUnique { 
    
     
     公共 のint minIncrementForUnique(INT [] A){
          int型の結果= 0 
         Arrays.sort(A)。
         以下のためにINT ; I <A.length; iが0 = I ++ ){
             場合(A [i]が<= A [I-1 ]){
                 int型プリ= A [i]は、
                A [I] = A [I-1] +1 
                結果 + = A [i]が- プレ。
            } 
        } 
         戻り値の結果;

        } 
     
}

 

おすすめ

転載: www.cnblogs.com/Transkai/p/12544714.html