# 第六十九周ARTS总结
# Algorithm
11ms | 6.37% Run time
39.1MB | 64.21% Memory
public List<List<Integer>> subsetsWithDup(int[] nums) {
Arrays.sort(nums);
int length = nums.length;
// 用作匹配,方便查询
Map<String, List<Integer>> map = new HashMap<>();
map.put("null", new ArrayList<>());
// 每次往已经找到的集合中添加当前元素
for (int i = 0; i < length; i++) {
int cur = nums[i];
// 已有结果(key集)
Set<String> keys = new HashSet<>(map.keySet());
for (String key : keys) {
String newKey = key + "," + cur;
if (map.get(newKey) == null) {
List<Integer> item = new ArrayList<>(map.get(key));
item.add(cur);
map.put(newKey, item);
}
}
}
return new ArrayList<>(map.values());
}
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
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
# Review
# Tip
- packagingOptions:
- exclude:过滤掉某些文件或者目录不添加到APK中
- pickFirst:匹配到多个相同文件,只提取第一个
- doNotStrip:设置某些动态库不被优化压缩
- merge:将匹配的文件都添加到APK中,和pickFirst有些相反,会合并所有文件
taskAffinity
一二三:taskAffinity
必须至少包含一个.
allowTaskReparenting
允许Activity
更换当前所在的活动栈
- kotlin的伴生函数
- 在kotlin的伴生函数里,方法使用
@JvmStatic
修饰的话在Java里就可以直接KotlinClass.doWork();
调用,否则只能KotlinClass.Companion.doWork();
调用 - 变量需要使用
@JvmField
修饰
- 在kotlin的伴生函数里,方法使用
- Android Studio默认运行时增量编译,生成的文件不会到APK中
- 视图动画的旋转只有X轴和Y轴,没有Z轴,因此只能旋转,无法翻转
# Share
暂无内容