当前位置:网站首页>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
边栏推荐
- Advantages and disadvantages of several note taking software
- Low code development platform sorting
- Webapi + form form upload file
- 索引:手把手教你索引从零基础到精通使用
- C dapper basically uses addition, deletion, modification and query transactions, etc
- 402. Remove K digits - greedy
- How to sort the numbers with text in Excel from small to large instead of the first number
- 470. Rand10() is implemented with rand7()
- C语言程序设计之函数的构造
- 双闭环直流调速系统matlab/simulink仿真
猜你喜欢
uni-app黑马优购项目学习记录(下)
394. 字符串解码-辅助栈
470. Rand10() is implemented with rand7()
Using quartz under. Net core -- job attributes and exceptions of [4] jobs and triggers
练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)
双闭环直流调速系统matlab/simulink仿真
Webapi + form form upload file
ASP. Net core dependency injection service life cycle
SiteServer CMS5. 0 Usage Summary
PC uses wireless network card to connect to mobile phone hotspot. Why can't you surf the Internet
随机推荐
剑指 Offer 03. 数组中重复的数字
古代埃及希腊,数学用的什么进制
2021长城杯WP
Future 用法详解
Ring back to origin problem - byte jumping high frequency problem
Generating access keys using JSON webtoken
Qt error: /usr/bin/ld: cannot find -lGL: No such file or directory
Allowed latency and side output
Read software engineering at Google (15)
.Net Core3. 1 use razorengine NETCORE production entity generator (MVC web version)
Advantages and disadvantages of several note taking software
Simulation of infrared wireless communication based on 51 single chip microcomputer
Use of shell awk command
Abnormal resolution of Xiaomi camera
Seven cattle upload pictures (foreground JS + background C API get token)
ASP. Net core JWT certification
41. 缺失的第一个正数
Using quartz under. Net core -- general properties and priority of triggers for [5] jobs and triggers
Entity Framework core captures database changes
1217_ Generating target files using scons