# 第二十六周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
暂无内容