# 第五十七周ARTS总结

# Algorithm

0ms | 100.00% Run time
38.3MB | 5.05% Memory

public int climbStairs(int n) {
//  // 这是斐波那契数列
//  if (n == 1) {
//      // 此时只有一种:1
//      return 1;
//  } else if (n == 2) {
//      // 此时有两种:1、1;2
//      return 2;
//  } else {
//      // 走一步的后续情况 + 走两步的后续情况
//      return climbStairs(n - 1) + climbStairs(n - 2);
//  }

    if (n == 1) {
        return 1;
    } else if (n == 2) {
        return 2;
    }

    int first = 1;
    int second = 2;

    // 将递归转换成遍历
    for (int i = 2; i < n; i++) {
        int temp = second;
        second = first + second;
        first = temp;
    }

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

6ms | 46.92% Run time
40.9MB | 13.48% Memory

public String simplifyPath(String path) {
    List<String> simplifyList = new ArrayList<>();

    // 先进行拆分
    String[] splits = path.split("/");

    // 然后精简
    for (String str : splits) {
        switch (str) {
            case "":
            case ".":
                break;
            case "..":
                if (simplifyList.size() > 0) {
                    simplifyList.remove(simplifyList.size() - 1);
                }
                break;
            default:
                simplifyList.add(str);
                break;
        }
    }

    // 最后合并
    StringBuilder builder = new StringBuilder();
    for (String str : simplifyList) {
        builder.append("/").append(str);
    }

    if (builder.length() == 0) {
        return "/";
    } else {
        return builder.toString();
    }
}
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

# Review

# Tip

  • Service如果需要在前台,需要申请FOREGROUND_SERVICE权限
  • 获取定位的方式:
    • GPS:通过硬件的GPS直接与卫星进行交互,优点是精度高,缺点是室内几乎接收不到信号
    • 网络:根据手机当前网络附近三个基站进行测速,计算出手机和每个基站的距离,进而计算出手机的位置,缺点是精度不高(由于谷歌网络在国内不可用,故该原生方式不可用)
  • 获取签名文件的信息:keytool -list -v -keystore <签名文件路径>
  • Android Studio中可以通过Gradle\app\Task\android\signingReport获取测试秘钥信息
  • Toolbar中属性的意思:
    • theme:区别于APP主题,专属于Toolbar的主题,主要区分深色主题和浅色主题
    • popupTheme:用于指定弹出菜单的主题
  • 只有setSupportActionBar(toolbar);之后Toolbar才会完全变成ActionBar,否则不会具有ActionBar的一些特性
  • 菜单文件中showAsAction的意思:
    • always:永远显示在Toolbar中,屏幕不够则不显示
    • ifRoom:屏幕空间够的情况显示在Toolbar中,不够则显示在菜单中
    • never:永远显示在菜单中

# Share

暂无内容

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