# 第六十九周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

# Review

# Tip

  • packagingOptions
    • exclude:过滤掉某些文件或者目录不添加到APK中
    • pickFirst:匹配到多个相同文件,只提取第一个
    • doNotStrip:设置某些动态库不被优化压缩
    • merge:将匹配的文件都添加到APK中,和pickFirst有些相反,会合并所有文件
  • taskAffinity一二三:
    • taskAffinity必须至少包含一个.
    • allowTaskReparenting允许Activity更换当前所在的活动栈
  • kotlin的伴生函数
    • kotlin的伴生函数里,方法使用@JvmStatic修饰的话在Java里就可以直接KotlinClass.doWork();调用,否则只能KotlinClass.Companion.doWork();调用
    • 变量需要使用@JvmField修饰
  • Android Studio默认运行时增量编译,生成的文件不会到APK
  • 视图动画的旋转只有X轴Y轴,没有Z轴,因此只能旋转,无法翻转

# Share

暂无内容

更新时间: 10/20/2022, 7:04:01 AM