当前位置:网站首页>31. Next arrangement
31. Next arrangement
2022-04-23 17:39:00 【hequnwang10】
One 、 Title Description
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]
Two 、 Problem solving
Two traversal
class Solution {
public void nextPermutation(int[] nums) {
// You need to find the first ascending subscript from the back
int length = nums.length;
int end = length-2;
// If the current value is greater than the following value , Keep looking for , Always find the first ascending subscript
while(end >= 0 && nums[end] >= nums[end+1]){
end--;
}
// After finding the subscript value , Find a value greater than the subscript value after
// Pay attention to the boundary conditions
if(end >= 0){
int next = length - 1;
while(next >= 0 && nums[end] >= nums[next]){
next--;
}
swap(nums,end,next);
}
reverse(nums,end+1);
}
public void swap(int[] nums,int left,int right){
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
public void reverse(int[] nums,int left){
int right = nums.length-1;
while(left <= right){
swap(nums,left,right);
left++;
right--;
}
}
}
版权声明
本文为[hequnwang10]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231732009984.html
边栏推荐
- 102. 二叉树的层序遍历
- 1217_使用SCons生成目标文件
- For the space occupation of the software, please refer to the installation directory
- 常用SQL语句总结
- Ring back to origin problem - byte jumping high frequency problem
- 2.Electron之HelloWorld
- Advantages and disadvantages of several note taking software
- ASP. Net core JWT certification
- Shell-sort命令的使用
- Clickhouse - data type
猜你喜欢
随机推荐
[C] thoroughly understand the deep copy
STM32 entry development board choose wildfire or punctual atom?
Using quartz under. Net core -- operation transfer parameters of [3] operation and trigger
Clickhouse table engine
Shell-awk命令的使用
For the space occupation of the software, please refer to the installation directory
Using quartz under. Net core -- job attributes and exceptions of [4] jobs and triggers
ASP. NET CORE3. 1. Solution to login failure after identity registers users
PC电脑使用无线网卡连接上手机热点,为什么不能上网
Learning record of uni app dark horse yougou project (Part 2)
matlab如何绘制已知公式的曲线图,Excel怎么绘制函数曲线图像?
Use of Shell sort command
ros常用的函数——ros::ok(),ros::Rate,ros::spin()和ros::spinOnce()
48. 旋转图像
Add drag and drop function to El dialog
C语言程序设计之函数的构造
Use of five routing guards
Low code development platform sorting
练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)
Allowed latency and side output








