Alg
一個數論題
我的做法是 預處理一下,獲得一個包含了最多 n 個天數的有序數列,預處理 O(n^2) ; 然後對預處理得到的序列,每個天數依次校驗天數對應的情況是否能滿足需求, 也是 O(n^2) ,是以時間複雜度是 O(n^2) . 空間複雜度是 O(n)
但是 逾時啦~
Rev
kotlin's hidden costs
講到了一些 kotlin 相比 java 的性能損失,寫 kotlin 的時候需要注意的一些點。我看了以後列舉一下我覺得有道理的 :
- kotlin 的
運算符. 例如*
因為這個的 JVM 位元組碼會先 system.arrayCopy 一個新的 array 再傳入 f, 需要視實際情況使用。fun f(vararg a : Int){} f(*arr)
-
運算符相關的問題, 也就是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 端接入代碼檢測
代碼檢測在我看來真的很有必要, 它不是一個限制,是一個輔助工具,會告訴你 ”這個地方你做的可能還不太對,是不是考慮考慮再改一下?“ , 這在我看來很有幫助。