当前位置:网站首页>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
- web254
- 【刷题】字符统计【0】
- Manually dig XSS vulnerabilities
- Yolov5进阶之七目标追踪最新环境搭建
- Codeworks round 803 (Div. 2) VP supplement
- Connect timed out of database connection
- seaborn clustermap矩阵添加颜色块
- How to use layui to display the data in the database in the form of tables
- SQL number injection and character injection
猜你喜欢
Soft keyboard height error
Lm08 mesh series mesh inversion (fine)
网关gateway-88
CPU設計實戰-第四章實踐任務一簡單CPU參考設計調試
[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
Aardio - Shadow Gradient Text
使用beef劫持用戶瀏覽器
【入门】截取字符串
web254
P4 installation bmv2 detailed tutorial
随机推荐
CPU design practice - Chapter 4 practical tasks - simple CPU reference design and debugging
web254
Analysis of slice capacity expansion mechanism
CPU设计实战-第四章实践任务一简单CPU参考设计调试
Uni hot update
Set up file server Minio for quick use
Hijacking a user's browser with beef
软键盘高度报错
Airsim雷达相机融合生成彩色点云
Precautions and skills in using regular expressions in golang
Latex formula code
【入门】取近似值
OJ input and output exercise
shardingSphere
【入门】提取不重复的整数
web254
php laravel微信支付
图扑软件通过 CMMI5 级认证!| 国际软件领域高权威高等级认证
Implementation and encapsulation of go universal dynamic retry mechanism
軟鍵盤高度報錯