天天看點

ARTS-02 20200622~20200628

Alg

一個數論題

我的做法是 預處理一下,獲得一個包含了最多 n 個天數的有序數列,預處理 O(n^2) ; 然後對預處理得到的序列,每個天數依次校驗天數對應的情況是否能滿足需求, 也是 O(n^2) ,是以時間複雜度是 O(n^2) . 空間複雜度是 O(n)

但是 逾時啦~

Rev

kotlin's hidden costs

講到了一些 kotlin 相比 java 的性能損失,寫 kotlin 的時候需要注意的一些點。我看了以後列舉一下我覺得有道理的 :

  • kotlin 的

    *

    運算符. 例如

    fun f(vararg a : Int){} f(*arr)

    因為這個的 JVM 位元組碼會先 system.arrayCopy 一個新的 array 再傳入 f, 需要視實際情況使用。
  • 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 端接入代碼檢測

代碼檢測在我看來真的很有必要, 它不是一個限制,是一個輔助工具,會告訴你 ”這個地方你做的可能還不太對,是不是考慮考慮再改一下?“ , 這在我看來很有幫助。

上一篇: ARTS - 01

繼續閱讀