leetcode-31

 

取得された装置の機能を達成するため、所定のアルゴリズムは、辞書的に大きい構成で次のシーケンス番号を再配置が必要です。

次に大きな配列が存在しない場合、再配列アラインメント(すなわち、昇順)の最小数。

あなただけの一定の追加のスペースを許可する、編集を配置する必要があります。

以下は、右の列に対応する出力で、いくつかの例では、左側の入力欄です。
→1、3,2、2,3、
3,2,1→、2、3
1,1,5 1,5,1→

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/next-permutation:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

 

パブリック クラスソリューション{
     公共 ボイド nextPermutation(INT [] NUMS){
         int型 I = nums.length - 2 一方(I> = 0 && NUMS [I + 1] <= NUMS [I]){ 
            I - 
        } 
        もし(I> = 0 ){
             int型 J = nums.length - 1 一方(j> = 0 && NUMS [J] <= NUMS [I]){ 
                J - 
            } 
            スワップ(NUMS、I、J)。
        } 
        (NUMS、I逆 + 1 )。
    }

    プライベート ボイド逆(INT [] NUMS、int型の開始){
         int型 I =開始、J = nums.length - 1 一方、(I < J){ 
            スワップ(NUMS、I、J)。
            I ++ ; 
            J - ; 
        } 
    } 

    プライベート ボイドスワップ(INT [] NUMS、int型 I、int型のJ){
         int型の TEMP = NUMS [I]。
        NUMS [I] = NUMS [J]。
        NUMS [J] = TEMP。
    } 
}

 

最初は、上部(背面)から右よりも大きいので、この高い位置に、スワップに高い必要性を選択することであるとの最小数

その後、我々は尾が左から右に降順になるように、その「秩序尾」、速やかに交換を確保する必要がある前に、プロセスので、

 

この質問は数学で、共通の問題を分析するのは難しいことではありません。

おすすめ

転載: www.cnblogs.com/CherryTab/p/12189727.html