# 第六十八周ARTS总结

# Algorithm

30ms | 17.98% Run time
62.8MB | 5.47% Memory

public List<Integer> grayCode(int n){
        // 最终结果
        List<Integer> ans=new ArrayList<>();

        // 缓存
        Map<Integer, Object> cache=new HashMap<>();
        Object placeHolder=new Object();

        // 是否继续寻找
        boolean canContinue=true;

        ans.add(0);
        cache.put(0,placeHolder);

        // 不停的找下一个数
        while(canContinue){
        canContinue=false;
        int last=ans.get(ans.size()-1);

        // 更改其中的一位,并判断在前面的序列是否存在这个数,不存在继续找
        for(int offset=0;offset<n; offset++){
        int temp=last^(1<<offset);
        if(cache.get(temp)==null){
        ans.add(temp);
        cache.put(temp,placeHolder);
        canContinue=true;
        break;
        }
        }
        }

        return ans;
        }
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

# Review

# Tip

  • module跳转的三种方式
    1. 隐式跳转(不好维护)
    2. 利用反射(混淆可能会出问题)
    3. 利用Aroute(原理采用HashMap来存放pathclass对象的映射)
  • 可通过给EditText添加setOnEditorActionListener方法来实现搜索按钮的点击功能
  • android:configChanges="orientation|screenSize"onConfigurationChanged共同使用可以避免配置改变时Activity的重建
  • 可使用git update-index --skip-worktree或者git update-index --assume-unchanged来忽略本地文件的改变,避免提交
  • 可以在buildTypes新增一种build类型;可在productFlavors内配置一种新的变种;可在flavorDimensions新增一种维度
  • 清单文件的优先级:依赖库中的清单文件(low) -> 应用模块主清单(medium) -> 构建变体的清单文件(medium) -> gradle配置的属性(high)
  • 如需生成fullDebug版本,构建系统会合并src/fullDebug/(构建变体),src/debug/(构建类型),src/full/(产品变种),src/main/(主源码)下的代码

# Share

暂无内容

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