LeetCode次の配列java
1241 ワード
次の配列を取得する関数を実装するには、アルゴリズムは、与えられた数値シーケンスを辞書シーケンスの次のより大きな配列に再配列する必要がある.
次のより大きな配列が存在しない場合は、数値を最小の配列(すなわち昇順配列)に再配列します.
追加の定数空間のみを使用できるように、その場で修正する必要があります.
以下に、入力が左側の列にあり、対応する出力が右側の列にある例を示します.
題意を理解する.
次のより大きな配列が存在しない場合は、数値を最小の配列(すなわち昇順配列)に再配列します.
追加の定数空間のみを使用できるように、その場で修正する必要があります.
以下に、入力が左側の列にあり、対応する出力が右側の列にある例を示します.
1,2,3
→ 1,3,2
3,2,1
→ 1,2,3
1,1,5
→ 1,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);
}
}