Alg
我的做法是 预处理一下,获得一个包含了最多 n 个天数的有序数列,预处理 O(n^2) ; 然后对预处理得到的序列,每个天数依次校验天数对应的情况是否能满足需求, 也是 O(n^2) ,所以时间复杂度是 O(n^2) . 空间复杂度是 O(n)
但是 超时啦~
Rev
讲到了一些 kotlin 相比 java 的性能损失,写 kotlin 的时候需要注意的一些点。我看了以后列举一下我觉得有道理的 :
- kotlin 的
*
运算符. 例如fun f(vararg a : Int){} f(*arr)
因为这个的 JVM 字节码会先 system.arrayCopy 一个新的 array 再传入 f, 需要视实际情况使用。 - kotlin 的
range
运算符相关的问题, 也就是0 .. 10
这个语法, 这里不要使用(0..10).foreach {}
的写法, 因为这种写法的字节码是使用Iterator
遍历的。而for(i in 0..10)
就是正常的 判断-跳转
Tip
AndroidStudio 或者别的 IDEA 族的 IDE, 都可以使用 IdeaVim
插件来给 Editor 增加一个 vim 模式, 这就使得查看代码变得很舒服(因为可以使用 Ctrl-B
Ctrl-W
HJKL
而不需要必须使用 上下左右
来操作光标了(而实际看代码的时候手移动到 上下左右区域是很麻烦),再配合 IDEA 默认的一些快捷键, 例如 查看父类(Cmd-U
)/查看实现(Shift-Cmd-B)/ 查看引用定义(Cmd-B)... 用熟了以后可以使得基于 IDEA 的代码查看变得十分轻松惬意。
Share
偷个懒,直接放链接了, Android 端接入代码检测
代码检测在我看来真的很有必要, 它不是一个限制,是一个辅助工具,会告诉你 ”这个地方你做的可能还不太对,是不是考虑考虑再改一下?“ , 这在我看来很有帮助。