ARTS-02 20200622~20200628
阿新 • • 發佈:2020-06-28
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
Share
偷個懶,直接放連結了, Android 端接入程式碼檢測
程式碼檢測在我看來真的很有必要, 它不是一個限制,是一個輔助工具,會告訴你 ”這個地方你做的可能還不太對,是不是考慮考慮再改一下?“ , 這在我看來很有幫助。