Next Permutation - Array - Medium - LeetCode
💻 coding

Next Permutation - Array - Medium - LeetCode

1 min read 172 words
1 min read
ShareWhatsAppPost on X
  • 1The next permutation algorithm rearranges an array into its lexicographically next greater permutation or the lowest order if not possible.
  • 2The solution must be implemented in place and utilize only constant extra memory.
  • 3Time complexity for the algorithm is O(n) and space complexity is O(1).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The next permutation algorithm rearranges an array into its lexicographically next greater permutation or the lowest order if not possible."

Next Permutation - Array - Medium - LeetCode

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such an arrangement is not possible, it must rearrange it as the lowest possible order (i.e., sorted in ascending order).

The replacement must be in place and use only constant extra memory.

Example 1:

Input: nums = [1,2,3] Output: [1,3,2] Example 2:

Input: nums = [3,2,1] Output: [1,2,3] Example 3:

Input: nums = [1,1,5] Output: [1,5,1] Example 4:

Input: nums = [1] Output: [1]

Constraints:

1 <= nums.length <= 100 0 <= nums[i] <= 100

public class Solution {
 public void NextPermutation(int[] nums) {
 
 int i=0;
 for(i = nums.Length-2; i>=0;i--){
 if(nums[i]<nums[i+1]){
 break;
 }
 }
 
 if(i<0){
 reverse(nums,0,nums.Length-1);
 }
 else{
 int j=0;
 for(j = nums.Length-1;j>=0;j--){
 if(nums[i]<nums[j]){
 break;
 }
 }
 
 swap(nums,i,j);
 reverse(nums,i+1,nums.Length-1);
 }
 
 }
 
 private void swap(int[] nums, int i, int j) {
 int temp = nums[j];
 nums[j] = nums[i];
 nums[i] = temp;
 }
 
 private void reverse(int[] nums, int l, int r) {
 while (l < r) {
 swap(nums, l++, r--);
 }
 }
}

Time Complexity: O(n)

Space Complexity: O(1)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 24 October 2020 · 1 min read · 172 words

Part of AskGif Blog · coding

You might also like