当前位置:网站首页>Topic34——31. Next spread

Topic34——31. Next spread

2022-06-21 08:43:00 _ Cabbage_

subject : An integer array array Is to arrange all its members in sequence or linear order .
for example ,arr = [1,2,3] , The following can be regarded as arr Permutation :[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] .
Integer array Next spread It refers to the next lexicographic order of its integers . More formally , Arrange all the containers in the order from small to large , So the array of Next spread It is the arrangement behind it in this ordered container . If there is no next larger arrangement , Then the array must be rearranged to the lowest order in the dictionary ( namely , Its elements are arranged in ascending order ).

for example ,arr = [1,2,3] The next line up for is [1,3,2] .
Similarly ,arr = [2,3,1] The next line up for is [3,1,2] .
and arr = [3,2,1] The next line up for is [1,2,3] , because [3,2,1] There is no greater order of dictionaries .
Give you an array of integers nums , find nums The next permutation of .

must In situ modify , Only additional constant spaces are allowed .

 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]

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

class Solution {
    
    public void nextPermutation(int[] nums) {
    
        int l;
        int r;
        for(int i = nums.length - 1; i > 0; i--) {
    
            if(i == 1 && nums[i] < nums[i - 1]) {
    
                l = 0;
                r = nums.length - 1;
                while(l <= r) {
    
                    swap(nums, l, r);
                    l++;
                    r--;
                }
                break;
            }
            if(nums[i] > nums[i - 1]) {
    
                for(int j = nums.length - 1; j >= i; j--) {
    
                    if(nums[j] > nums[i - 1]) {
    
                        swap(nums, j, i - 1);
                        l = i;
                        r = nums.length - 1;
                        while(l <= r) {
    
                            swap(nums, l, r);
                            l++;
                            r--;
                        }
                        break;
                    }
                }
                break;
            } 
        }

    }

    public void swap(int[] nums, int a, int b) {
    
        int temp = nums[a];
        nums[a] = nums[b]; 
        nums[b] = temp;
    }
}
原网站

版权声明
本文为[_ Cabbage_]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/172/202206210830008524.html