当前位置:网站首页>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);
}
}
边栏推荐
- 【Redis】一气呵成,带你了解Redis安装与连接
- Php laraver Wechat payment
- How to prevent the other party from saying that he has no money after winning the lawsuit?
- Find the nearest n-th power of 2
- How to troubleshoot SharePoint online map network drive failure?
- ContentType所有类型对比
- The difference between interceptors and filters
- php laravel微信支付
- How to get a SharePoint online site created using the office365 group template
- [staff] key number (key number identification position | key number marking list | a major key identification principle | F, C, G position marking ascending | F major key identification principle | B
猜你喜欢
![[batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)](/img/48/de19e8cc007b93a027a906d4d423b2.png)
[batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)

手工挖XSS漏洞

5大组合拳,解决校园6大难题,护航教育信息化建设

window c盘满了

web254

Adding color blocks to Seaborn clustermap matrix

【入门】输入整型数组和排序标识,对其元素按照升序或降序进行排序

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

使用beef劫持用户浏览器

Instead of houses, another kind of capital in China is rising
随机推荐
手工挖XSS漏洞
Yolov5进阶之七目标追踪最新环境搭建
shardingSphere
XX攻击——反射型 XSS 攻击劫持用户浏览器
empirical study and case study
The difference between interceptors and filters
web254
Tupu software has passed CMMI5 certification| High authority and high-level certification in the international software field
getInputStream() has already been called for this request
0 basic introduction to single chip microcomputer: how to use digital multimeter and precautions
P4 installation bmv2 detailed tutorial
Teach you how to apply for domestic trademark online step by step
postgresql源码学习(26)—— Windows vscode远程调试Linux上的postgresql
防“活化”照片蒙混过关,数据宝“活体检测+人脸识别”让刷脸更安全
sqlalchemy创建MySQL_Table
Comprehensive experiment Li
Latex table
Insufficient executors to build thread pool
How to check ad user information?
SharePoint - how to quickly check whether SharePoint is standard or enterprise edition?