当前位置:网站首页>Leetcode t31: next spread
Leetcode t31: next spread
2022-07-01 08:17:00 【Fan Qianzhi】
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]
Tips
1 <= nums.length <= 100
0 <= nums[i] <= 100
Ideas
First, look from right to left , Find a subscript i n d ind ind, Make all the numbers on the right of it in descending order . for example :
↓
1432, ind=0
And then , stay [ i n d + 1 , n u m s . l e n g t h − 1 ] [ind+1, nums.length-1] [ind+1,nums.length−1] Choose a book that is the smallest and greater than a [ i n d ] a[ind] a[ind] Number of numbers , And a [ i n d ] a[ind] a[ind] Swap places , And will i n d ind ind The numbers on the right are arranged in ascending order .
Code
int findInd(int[] a) {
// Look from right to left , Find a subscript , All the numbers on the right are from big to small , Such as 1.432,
// that , Need from 432( That is, find the smallest of all the numbers in reverse order , namely 2), Replace 1, And let 143 Ascending order
int ind = a.length-1;
while(ind > 0) {
if(a[ind] <= a[ind-1]) ind--;
else break;
}
return ind-1;
}
void next_permutation(int[] a) {
int ind = findInd(a);
if(ind == -1) {
Arrays.sort(a);
}
else {
int tar = -1;
for(int i = a.length-1; i > ind; i--) {
if(a[i] > a[ind]) {
tar = i;
break;
}
}
int t = a[ind]; a[ind] = a[tar]; a[tar] = t;
Arrays.sort(a, ind+1, a.length);
}
}
边栏推荐
- 01 numpy introduction
- 【刷题】字符统计【0】
- P4 installation bmv2 detailed tutorial
- Lm08 mesh series mesh inversion (fine)
- 一套十万级TPS的IM综合消息系统的架构实践与思考
- shardingSphere
- Koltin35, headline Android interview algorithm
- Microsoft stream - how to modify video subtitles
- 【入门】输入整型数组和排序标识,对其元素按照升序或降序进行排序
- Rumtime 1200 upgrade: London upgrade support, pledge function update and more
猜你喜欢

Five combination boxing, solving six difficult problems on campus and escorting the construction of educational informatization

Significance and measures of source code encryption

Tupu software has passed CMMI5 certification| High authority and high-level certification in the international software field

Latex table

手工挖XSS漏洞

7-26 word length (input and output in the loop)
![[introduction] approximate value](/img/6b/597178d848dd21110f36601fc31092.png)
[introduction] approximate value

Office365 - how to use stream app to watch offline files at any time

Adding color blocks to Seaborn clustermap matrix

网关gateway-88
随机推荐
Erreur de hauteur du clavier souple
CPU design practice - Chapter 4 practical tasks - simple CPU reference design and debugging
Tupu software has passed CMMI5 certification| High authority and high-level certification in the international software field
Learn the knowledge you need to know about the communication protocol I2C bus
php laravel微信支付
OJ input and output exercise
[untitled]
Aardio - 阴影渐变文字
String coordinates of number to excel
web254
Anddroid 文本合成语音TTS实现
软键盘高度报错
Yolov5进阶之六目标追踪环境搭建
PHP laravel wechat payment
Embedded-c language-10-enumeration / (function) pointer (function) / multi-level pointer /malloc dynamic allocation / file operation
Aardio - [problem] the problem of memory growth during the callback of bass Library
[introduction] approximate value
源代码加密的意义和措施
Sqlalchemy creating MySQL_ Table
Manually dig XSS vulnerabilities