3.學習至少乙個技術技巧
4.分享一篇有觀點和思考的技術文章
1.每週至少做乙個 leetcode 的演算法題
演算法題:14. 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 ""。
示例 1
:輸入: [
"flower
","flow
","flight"]
輸出: "fl
"示例 2:
輸入: [
"dog
","racecar
","car"]
輸出:
""解釋: 輸入不存在公共字首。
說明:所有輸入只包含小寫字母 a-z 。
解答:
publicclass
solution
}return
prefix;
}}
此處拉下了。
3.學習至少乙個技術技巧
關於dictionary、hashtable、list的比較,之前收藏的,今天回顧一下。
dictionary:
採用鍊錶法
適合增刪的動作很多( 因為解決碰撞的方式 是list.add)
單執行緒程式中推薦使用 dictionary, 有泛型優勢, 且讀取速度較快, 容量利用更充分.
對於值型別,特定型別(不包括 object)的 dictionary的效能優於 hashtable,這是因為 hashtable 的元素屬於 object 型別,所以在儲存或檢索值型別時通常發生裝箱和取消裝箱操作
hashtable:
採用開放定址法
適合改動的動作很少 查詢的動作很多
多執行緒程式中推薦使用 hashtable, 預設的 hashtable 允許單執行緒寫入, 多執行緒讀取, 對 hashtable 進一步呼叫 synchronized() 方法可以獲得完全執行緒安全的型別. 而 dictionary 非執行緒安全, 必須人為使用 lock 語句進行保護, 效率大減.
dic 和 list
list是對陣列做了一層包裝,我們在資料結構上稱之為線性表,而線性表的概念是,在記憶體中的連續區域,除了首節點和尾節點外,每個節點都有著其唯一的前驅結點和後續節點。我們在這裡關注的是連續這個概念。
而hashtable或者dictionary,他是根據key而根據hash演算法分析產生的記憶體位址,因此在巨集觀上是不連續的,雖然微軟對其演算法也進行了很大的優化。由於這樣的不連續,在遍歷時,dictionary必然會產生大量的記憶體換頁操作,而list只需要進行最少的記憶體換頁即可,這就是list和dictionary在遍歷時效率差異的根本原因。
根據value 的查詢 dic 的效率是高於 list 的 但是遍歷的話 則dic 要差點。這就好比你要摘抄書裡邊的所有文字 是根據目錄 查乙個找一篇文章 快,還是直接從正文開始 從頭到尾快遍歷快一樣。單獨的找某一篇知道題目(key)的文章 當然是從目錄快了
在dictionary中,除了要儲存我們實際需要的value外,還需要乙個輔助變數key,這就造成了記憶體空間的雙重浪費。
在尾部插入時,list只需要在其原有的位址基礎上向後延續儲存即可,而dictionary卻需要經過複雜的hash計算,這也是效能損耗的地方。
list和 datatable
datatable,ilist效能比較
1)二進位制序列化的情況
從測試結果可以看出,ilist序列化的檔案大小比datatable小得多,這意味著在資料傳輸中頻寬占用小很多,所以在設計remoting介面時盡量使用ilist作返回值。
2)xml序列化的情況
從測試結果可以看出,ilist序列化後的檔案比同樣比datatable小,但差距已經沒有二進位制序列化那麼明顯了。而且ilist的二進位制序列化和xml序列化相差很大,所以remoteing中建議使用二進位制序列化。
3)操作性比較
datatable有支援資料的提交、回滾、查詢等強大的方法,但訪問單元格內容的時候不方便,還要型別轉換。
ilist則訪問項的屬性比較方便,有屬性自動提示,不用型別轉換,有linq的協助也能實現強大的查詢。
4.分享一篇有觀點和思考的技術文章
白話解析,一致性雜湊:
左耳聽風 ARTS Week 002
3.學習至少乙個技術技巧 4.分享一篇有觀點和思考的技術文章 1.每週至少做乙個 leetcode 的演算法題 演算法題 20.有效括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸...
再讀《左耳聽風》
今天,偶然間又想起來了自己訂閱的極客時間課程,好久沒有看了。之前買了兩個課程,乙個是 左耳聽風 乙個是關於pygame的。左耳聽風 這個課程應該是一年前就出了的,當時也是機緣巧合看到了這個課程,剛推出來的時候就買了 忘了當時是多少錢了 現在好像已經漲到299了。當時剛買的時候,看了幾篇文章,給我的印...
左耳聽風 第九周
每週完成乙個arts 每週至少做乙個 leetcode 的演算法題 閱讀並點評至少一篇英文技術文章 學習至少乙個技術技巧 分享一篇有觀點和思考的技術文章。也就是 algorithm review tip share 簡稱arts leetcode 844.比較含退格的字串 leetcode 148 ...