动态

列表
创建 时间

二分查找的通用模板

二分查找的概念本身很容易理解,這裏不做贅述。其使用前提只有一個:單調數組 樸素二分查找 當在一個有向數組中,查找數組中是否有某個值,代碼很簡單: const binarySearch = (nums, target) = { let l = 0; let r = nums.length - 1; while(l=r) { const mid = (l+r) 1 if(

创建 时间

數據結構算法小結

前言 解決問題思維方式 假設我們有一整套螺絲刀,要進行筆記本清灰操作,我們主要的思維邏輯如下: 若要清灰,必須先取出風扇 若要取出風扇,必須先把從外殼到風扇的螺絲全部拆下 那麼清灰問題就變成了拆一堆不同規格的螺絲,當我們看到不同規格的螺絲,就會比較螺絲口大小、形狀和螺絲刀規格,從而選取對應的螺絲刀。 可以看出,當我們遇到一個複雜問題,下意識的思維方式就是將一個複雜問題,轉移成我們熟知的一些

创建 时间

單調棧模板和適用範圍

刷力扣時,遇到關鍵詞:下一個更大/小的數這類題目時,往往會採用單調棧的解法,如每日温度 刷題最常見的問題就是,看到題解,感覺很精妙,但下次遇到一模一樣的題目時,往往知道思路,但寫不出代碼,有或者遇到類似的變體題目時,不會往這方面想。這兩種情況在之前的文章(數據結構算法小結)中提到過,分別有兩方面的原因: 對工具(如單調棧知識點)的特性(適用範圍)不明朗 對工具的原理沒有真正的理解 初學單調