31. Next Permutation

LeetCode

Approach: Single Pass Approach link

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
private void swap(int[] nums, int i, int j){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
private void reverse(int[] nums,int start,int end){
while(start<end) swap(nums,start++,end--);
}
public void nextPermutation(int[] nums) {
if(nums==null||nums.length<=1) return;
int i=nums.length-2;
while(i>=0&&nums[i]>=nums[i+1]) i--;
if(i>=0){
int j=nums.length-1;
while(j>=0&&nums[j]<=nums[i]) j--;
swap(nums,i,j);
}
reverse(nums,i+1,nums.length-1);
}
}

0%