Day5 本週總結

haohaoscnblogs發表於2024-07-21

目錄
  • 陣列
  • 連結串列
  • 總結

陣列

關於陣列,本身結構上比較簡單,所以題型上要思考的較多,思想上大多為演算法單調性和不變性思想策略,模擬等

  • 演算法單調性和不變性思想策略,即將一個未知區間的陣列亦步亦趨的轉化為某些區間已知,某些區間未知的中間狀態,最終轉化為全部區間已知。(如二分查詢的兩種不同返回值情況)。
  • 雙指標法 序陣列的平方使用了雙指標法,但是思想上也是減治策略,即減少了未知陣列的長度,增加了需求陣列的長度,最終達到完整的輸出陣列。
  • 滑動視窗法 長度最小的子陣列使用了滑動視窗法,確定每個合法的後指標為結尾的子陣列長度,然後縮減前指標,找到以當前節點為結尾的最小的子陣列,邏輯上來說肯定也是用演算法單調性和不變性思想策略,即確定的以當前指標結尾的最小子陣列的長度越來越多,最終達到全部已知,找到最小的即可。
  • 螺旋矩陣II採用了模擬的思路,即亦步亦趨地根據題意,模擬整個遍歷過程,邏輯上來說肯定也是用演算法單調性和不變性思想策略,但是這種比較直觀,所以就歸為了模擬法。需要注意邊界條件。

連結串列

關於連結串列,同樣有兩種題型,減治和模擬

  • 一種是簡單模擬型別的題,這種題就是按照題目描述去操作即可,思考上主要在於單次迴圈需要修改的指標域和順序,注意由於之前的修改需要提前儲存的變數以及迴圈條件即可。* 另一種是雙指標類的題。實際上第二種也算是模擬型別,只是不像第一種題那麼直觀,不能根據題目描述直接得到需要遍歷和單次遍歷需要操作的節點,一般是透過快慢指標得到需要修改的節點後,再去做修改。比如連結串列相交和環形連結串列。
    另外,關於連結串列,還需要注意虛擬頭節點技術,一般增刪改需要用來這個dummyHead來統一頭節點和其他普通節點的操作,對於查詢,則一般不需要使用。

總結

總的來說,在這一週的學習中,主要用了分解問題思想去解決問題,因為模擬實際也是分解,但是因為題目比較直觀,所以單獨分出來,對於這類題,主要注意的是邊界條件。

  • 演算法單調性和不變性思想策略,即將一個未知區間的問題亦步亦趨的轉化為某些區間已知,某些區間未知的中間狀態,最終轉化為全部區間已知。即減少未知範圍。