【學習筆記 - DSA】為什麼我想用圖像來學資料結構與演算法

更新 發佈閱讀 3 分鐘

圖像理解,對我來說比較自然

如果是電腦科學本科背景,資料結構與演算法大多是必修基礎;但對像我這樣,從生科系轉職成前端工程師的人來說,一開始就算沒有把這一塊補齊,好像也能開始寫程式、完成工作。只是工作一段時間後,我越來越明顯感覺到:很多實際遇到的問題,其實都和資料結構與演算法有關。

不一定是面試題,而是像:

  • 為什麼某段程式在資料一多就變慢
  • 為什麼這樣寫總覺得卡卡的,卻說不上來問題在哪

當我開始想認真把這一塊補起來時,卻發現學習過程本身對我來說並不輕鬆。直接看文字說明、數學公式或程式碼時,我需要花很多時間在腦中「自己補畫面」,而且常常會有一種很挫折的感覺:

每一行好像都看得懂,但合起來卻不知道整體到底在做什麼。

我分不清楚現在卡在哪一個步驟,也很難回想整個流程跑過一次後,狀態是怎麼變化的。

直到後來我慢慢注意到一件事:只要我真的理解了某個資料結構或演算法,腦袋裡幾乎一定會出現畫面。

那時我才意識到,也許問題是「理解方式」。

可能跟前端工程師的思考習慣有關

回頭想想自己的工作習慣,其實滿符合這個狀況的。在寫前端時,我通常會:

  • 先看到設計稿
  • 在腦中想像畫面結構
  • 再思考 component 要怎麼切
  • 資料要怎麼流動、狀態怎麼變化

我很少一開始就直接寫程式,而是需要先「看到東西長什麼樣子」。後來我發現,其實資料結構與演算法也是一樣的概念。只是它們是看不到的畫面

Array 裡的元素怎麼排列、pointer 怎麼移動、資料在什麼時候被存進去、拿出來,如果腦中沒有畫面,就只能靠硬記,很快就會混在一起。但一旦畫面出現,理解會突然變得比較直覺,也比較容易記住。

我目前嘗試的學習方式

所以我決定用比較符合自己思考方式的方法,重新學資料結構與演算法,並把這個過程當成學習筆記記錄下來。目前我打算這樣嘗試:

  1. 先用圖像整理我對某個資料結構或演算法的理解
    在還沒寫程式之前,先弄清楚:
    - 結構大概長怎樣
    - 每個元素或角色在做什麼
  2. 再對應 LeetCode Blind 75 裡的相關題目
    解題時,會先用圖像把流程拆開,對我來說,這有點像是「視覺化的 pseudocode」讓我知道每一步為什麼要這樣做。
  3. 最後再用 TypeScript 把畫面轉成程式碼
    同時記下我目前對時間複雜度與空間複雜度的理解,不追求完整推導,而是先回答:這樣寫為什麼比較快?代價是什麼?

這些內容都只是我目前學到、想通的方式,之後如果理解有變,也會隨著學習更新。

這系列筆記比較適合誰

這個系列不是完整教學,也不是標準答案,比較像是我在補資料結構與演算法時,把卡住的地方、畫過的圖、想通的過程記錄下來。如果你:

  • 不是資訊本科背景
  • 看得懂程式碼,但很難在腦中串起整個流程
  • 需要先「看到畫面」才比較好理解

也許這些學習筆記能陪你一起走這段路。

留言
avatar-img
樹杷林柳橙誌
1會員
6內容數
記錄生活、思考、心得
你可能也想看
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
班上闖來了一個陌生人!該如何快狠準揪出他?這道經典考題的解法,遠比你想的還要多種 ......
Thumbnail
班上闖來了一個陌生人!該如何快狠準揪出他?這道經典考題的解法,遠比你想的還要多種 ......
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
一串數字能夠組成等差數列嗎?有沒有不排列就能判斷的方法?
Thumbnail
一串數字能夠組成等差數列嗎?有沒有不排列就能判斷的方法?
Thumbnail
這道題你一定會解,但你知道怎麼把迴圈改寫成「迭代」嗎?這招學起來!
Thumbnail
這道題你一定會解,但你知道怎麼把迴圈改寫成「迭代」嗎?這招學起來!
Thumbnail
你聽過 "LIFO" 嗎?搞不好在解這題時你已經不知不覺用到它了喔 XD
Thumbnail
你聽過 "LIFO" 嗎?搞不好在解這題時你已經不知不覺用到它了喔 XD
Thumbnail
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
Thumbnail
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
Thumbnail
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
Thumbnail
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
Thumbnail
只講得出一種做法就輸了!畫點文氏圖,幫你複習一下集合運算~
Thumbnail
只講得出一種做法就輸了!畫點文氏圖,幫你複習一下集合運算~
Thumbnail
% 這個符號在 SQL 能做什麼,你都記得嗎?
Thumbnail
% 這個符號在 SQL 能做什麼,你都記得嗎?
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News