# 第二十六周ARTS总结
# Algorithm
0ms | 100.00% Run time
41.5MB | 31.00% Memory
public void nextPermutation(int[] nums) {
boolean finded = false;
for (int i = nums.length - 1; i > 0; i--) {
// 如果前一个数比后一个数小(i-1之后的必定为倒序),则找到i-1之后的最接近i-1并且比i-1大的数
if (nums[i] > nums[i - 1]) {
int index = nums.length - 1;
while (nums[index] <= nums[i - 1]) {
index--;
}
// 交换index索引处的值与i-1索引处的值
int temp = nums[i - 1];
nums[i - 1] = nums[index];
nums[index] = temp;
// 重排列i-1之后的数组
sortRest(nums, i - 1);
finded = true;
break;
}
}
// 如果全倒序
if (!finded) {
sortRest(nums, -1);
}
}
// 将index后边的重新排列
private void sortRest(int[] nums, int index) {
int x = index + 1;
int y = nums.length - 1;
while (x <= y) {
int temp = nums[y];
nums[y] = nums[x];
nums[x] = temp;
x++;
y--;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Review
# Tip
aapt
:打包资源文件,包括res
和assets
文件夹下的资源、AndroidManifest.xml
文件、Android
基础类库aidl
:将.aidl
接口文件转换成.java
文件Java Compiler
:编译java
文件,生成.class
字节码文件dex
:将所有的第三方libraries
和.class
文件转换成Dalvik虚拟机
支持的.dex
文件apkbuilder
:打包生成apk文件,但未签名Jarsigner
:对未签名的apk文件进行签名zipalign
:对签名后的apk文件进行对其处理
# Share
暂无内容