LeetCode次の配列java


次の配列を取得する関数を実装するには、アルゴリズムは、与えられた数値シーケンスを辞書シーケンスの次のより大きな配列に再配列する必要がある.
次のより大きな配列が存在しない場合は、数値を最小の配列(すなわち昇順配列)に再配列します.
追加の定数空間のみを使用できるように、その場で修正する必要があります.
以下に、入力が左側の列にあり、対応する出力が右側の列にある例を示します.1,2,31,3,2 3,2,11,2,3 1,1,51,5,1
 
題意を理解する.
class Solution {
    //    :                        
    //      ,           ,        x,                  
    //  x            
    //in:132  231 expect:213
    //in:52431   53421 out:53124
    public void nextPermutation(int[] nums) {
        boolean flag = false;
        for(int i=nums.length-2; i >=0; i--){
            if(nums[i] < nums[i+1]){
                int j;
                for(j = nums.length-1; j>i; j--){
                    if(nums[j] > nums[i])
                        break;
                }
                
                int tmp = nums[j];
                nums[j] = nums[i];
                nums[i] = tmp;
                
                Arrays.sort(nums,i+1,nums.length);
                
                flag = true;
                break;
            }
        }
        if(!flag)
            Arrays.sort(nums);
    }
}