今天不寫 code -- 聊聊 Leetcode 刷題

更新於 2024/06/30閱讀時間約 5 分鐘

相信準工程師&已經是工程師的人,對 Leetcode 網站不陌生,即使沒用過,也會聽圈內人提及它。

簡單來說,它是個程式語言版的線上題庫平台,除了提供題目描述、讓你撰寫程式碼的區塊之外,也能看到其他解題者分享的解法、疑問討論。當你送出你寫的程式碼,並且 Accept(i.e. 通過題目設定的所有 test cases)的話,還能看到你的 runtime、memory 使用量的表現排行,同時可以點選前面排名的長條區域,看看更好表現的寫法長什麼樣子。

我在職訓期間開始接觸 Leetcode,直到二面上機考、試用期考核都是靠 Leetcode 練習&考試,即使轉正了,也偶爾看看 LeetCode Weekly Digest 有什麼有趣的題目可做。這裡就來分享一下我的使用經驗與觀點。


初入 Leetcode

在職訓期間,有講師跟所有學員簡單地1-1面談,了解一下他們未來的志向,並提供建議。當我提到想要做數據相關的工作,並且履歷投遞首先鎖定在科技業時,講師給了一個非常明確的準備方向:刷 Leetcode 上的題目,刷爆!

「刷題」這個詞,對我來說一點都不陌生:在之前的數學教育職涯,最討厭聽它 XD

從學習心理學的角度來說,練習大量題目可以增加熟練度,尤其對單純仰賴程序性知識計算題很有用,但過度練習到接近反射動作的話,容易看到關鍵字(90度 -> 畢氏定理) or 關鍵物件(平行線 -> 比例線段),就鎖定在單一解題策略上,面對需要理解圖表、情境描述的應用題時,無法彈性地思考、規劃如何解題,輕則解題費時,重則直接卡題,都不是在測驗表現上樂見的狀況。

不過相對地,以工程師身份來說,還在菜鳥等級的我,就是需要刷 Leetcode 上的題目來練好基本功;就像你不會數學基本運算,即使你有計算機(可以想像是現在很夯的生成式 AI 工具),也不會知道怎樣操作這些符號,取得正確的答案,更不用說要回答應用類型的問題。在正式踏入職場後,這個認知更加明確:工作上的任務相當於應用題,Leetcode 上的題目則跟計算題等價,相輔相成,缺一不可。

至於是否會擔心剛才提到的過度練習所帶來的反效果,我對自己是挺有信心,不會太輕易地落入這個困境。一來本來就知道有這個風險,會有意識地避免 XD ,二來也沒有非常密集地「只」做 Leetcode 上的題目,因為上班就會轉換到應用題的模式,自然就不容易被“框住”。如果是還沒踏入工程師界的讀者,想要避免過度練習的問題,比較簡單的做法是:找不同平台的題目穿插著練習;通常不同平台的題目取向會有差異,能一定程度地讓大腦恢復彈性。

面對 Leetcode 的解題心態

同樣是把 Leetcode 當作練功夫的地方,但每個人的做法仍有所不同。在轉職與職場上,跟身邊的人交流了些看法,以下整理幾個經常討論到的觀點:

致力於寫出表現最好的解法?

如前面簡介所述,Leetcode 的每道題目都會呈現你的解法表現如何,因此不難理解,有些人會在想出最佳解時,才提交解法,甚至把排行前面的解法背起來。

這讓我想起學生時期參加數學競試的經歷。難度較高的題目,不走特定的思路破題,根本無法解出答案,有些人就會採取「背解法」的策略。我不否認一些 tricky 的手段,可以幫助解題,但我認為「理解手段有用的原因」才是重點。

所以,我在解 Leetcode 題目時,不會一開始就要求自己寫到最好,而是先以自己的思路,想辦法寫出 Accept 的結果(aka 程式碼能 work 優先),再從表現排行 or 解法討論區,研讀其他人的解法,從中擷取自己看得懂,或者目的相同但寫法更討自己喜歡的部分,融合進原本的思路中,漸進地改善解法的表現,既使沒改善也無妨,重要的是你知道這個解法在做什麼,以及每個步驟為什麼要這麼寫。

也許為了解題需要,終究是要把關鍵步驟背起來,但先嘗試理解它再背,才有可能內化成自己的知識,比硬記更有效果。

只練特定領域或特定難度的題目?

如果你已經有明確的練習目標,鎖定特定領域的題目來練習是OK 的,Leetcode 也有提供搜尋特定領域題目的功能,讓你更方便地找到合適的內容。而難度的部分,有人覺得一定得練 Medium 或 Hard 的題目,才能讓自己的技巧等級提升,絕對看不上 Easy 的題目。

確實有人會以儀表板上的練習題數當作“戰績”,顯示自己的技術等級高低;對資歷深的工程師來說,或許是如此,但對尚屬資淺的我認為,與其呷緊弄破碗,不如細水長流。

不免俗地再以學習數學為例。還沒學穩基礎就想跳級做難題,自己打擊自己的信心,怎麼會想繼續學下去呢?根據自己的學習狀況,漸進地提升等級,保持面對題目、解題的感覺,才可能學得久,累積夠多經驗後,自然能解決一定難度或複雜度的問題。

所以,我覺得一開始上 Leetcode 練習時,無論在挑選領域或難度上,別給自己太大的壓力,先找你覺得有興趣、有 fu 的題目來做,做多了之後,再 focus 在想做的領域,或者想挑戰的難度,也為時不晚。


Epilogue
「今天不寫 code」系列,主要以個人的經歷,分享工程師職場的軟知識(技術面已經有很多大手級的內容可參考了,暫時還沒辦法觸及這個等級😅),希望未來可以持續更新下去💪🏻
avatar-img
11會員
40內容數
世界不斷變動,總有些新奇的事物,等待我去發掘、剖析與分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
貓想享 的其他內容
在職訓課程的最後,就是重頭戲——專題製作。這是需要自行發想主題,並從班上召集有共同想法的同學,一起完成的結訓成果,也可以想成展現技術的作品,未來能用在履歷或面試報告上。過程中經歷了主題討論、組員挑選、製作與成發,讓我收穫更多,以及一些歡樂(?的部分,在此一併分享給大家。
既然決定參加職訓,就要能夠「對症下藥」,找最接近我想做的領域來上,因此當初直接以「數據分析」、「資料科學」等關鍵字搜尋,最後選擇了結合現今正行的AI相關課程。本篇將以課程為主題,分享職訓的感想。
kaggle在2022年針對平台的資料科學家調查,他們使用程式語言的前三名為Python、SQL、R。先前把SQL學到一個段落,接著就學習Python,並整理了學習期間的小小心得。
在準備轉職期間,為了能更接近數據分析的領域,首先決定要進修的領域是程式語言,首先從門檻相對不高的SQL(Structured Query Language,結構化查詢語言)開始。在此分享目前為止學到的一些小小心得。
在重新當個學習者的期間,我還同時準備了TOEIC檢定考試。仗著自己的英文底子,加上曾經參加過GEPT的經驗,以為準備起來很容易。這裡就談談我準備的經驗,以及記錄未來還能努力的方向。
在職訓課程的最後,就是重頭戲——專題製作。這是需要自行發想主題,並從班上召集有共同想法的同學,一起完成的結訓成果,也可以想成展現技術的作品,未來能用在履歷或面試報告上。過程中經歷了主題討論、組員挑選、製作與成發,讓我收穫更多,以及一些歡樂(?的部分,在此一併分享給大家。
既然決定參加職訓,就要能夠「對症下藥」,找最接近我想做的領域來上,因此當初直接以「數據分析」、「資料科學」等關鍵字搜尋,最後選擇了結合現今正行的AI相關課程。本篇將以課程為主題,分享職訓的感想。
kaggle在2022年針對平台的資料科學家調查,他們使用程式語言的前三名為Python、SQL、R。先前把SQL學到一個段落,接著就學習Python,並整理了學習期間的小小心得。
在準備轉職期間,為了能更接近數據分析的領域,首先決定要進修的領域是程式語言,首先從門檻相對不高的SQL(Structured Query Language,結構化查詢語言)開始。在此分享目前為止學到的一些小小心得。
在重新當個學習者的期間,我還同時準備了TOEIC檢定考試。仗著自己的英文底子,加上曾經參加過GEPT的經驗,以為準備起來很容易。這裡就談談我準備的經驗,以及記錄未來還能努力的方向。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
接玲下課前,我去夜市買了宵夜,因為,內人最近接了新的單位,萬事皆在摸索階段,又有開不完的會,諸事煩心。晚飯加追片劇後,幫她舒壓按摩完,我說“我帶妳去海邊走走吧”。 21:20玲下課,看到我買這麼多東西,驚嘆說“怎麼這麼好”!呵呵……想得美了,東西是我跟她娘的。
在去年立下的年度寫作目標並沒有達標。沒有達標的理由包含外在環境因素和內在個人因素,以下且一一道來。
Thumbnail
說到網路小說,跟我同齡的人應該都會想到「痞子蔡、藤井樹、橘子、九把刀」吧?那是手機還沒辦法上網的年代,那是正版意識還沒抬頭的年代,那是上課時間能用藍芽互傳「便簽」和小說檔的年代,那也是上課偷看小說老師還會縱容的年代。我的寫作啟蒙老師們應該就是這幾位作家,畢竟國家義務教育從來沒有教過學生如何寫出一
沒想到,我也有這一天! 人生來到了一個不知道要幹嘛的時期! 從很久以前,我就喜歡偶爾寫寫東西!但是也就只有偶爾寫而已! 最近幾年更是什麼都沒寫。 但最近人生不知道要幹嘛! 不如重操舊業,寫寫東西吧! 請大家多多指教!
Thumbnail
藤井樹的網路小說,陪我度過青少年時期 橘子的愛情小說,總會觸動到心裡細膩的情感
靈感不是天天有,今天想不出好題材,並不代表明天沒有好點子⋯⋯
Thumbnail
感恩的心,感謝有你。 是你們的支持, 誤我一生,讓我有勇氣做掉我自己。 感恩的心,感謝命運。 很開心,和你巧遇在這裡, 雖然我不知道,你們眼睛都在看哪裡。
Thumbnail
紀念文是吧! 這個音樂檔,我自己彈琴好像當時是在台北妹的租屋處,錄音的,用她的生財器具! 我當然彈 Yiruma - I 我 為什麼要紀念? 因為我這首背景音樂被認證了! 什麼意思呢?也不知道哪一天,我的YT頻道,突然這首曲子就被韓國的經紀公司還是什麼版權等等來源的等等,我也不太懂。 就被標籤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
接玲下課前,我去夜市買了宵夜,因為,內人最近接了新的單位,萬事皆在摸索階段,又有開不完的會,諸事煩心。晚飯加追片劇後,幫她舒壓按摩完,我說“我帶妳去海邊走走吧”。 21:20玲下課,看到我買這麼多東西,驚嘆說“怎麼這麼好”!呵呵……想得美了,東西是我跟她娘的。
在去年立下的年度寫作目標並沒有達標。沒有達標的理由包含外在環境因素和內在個人因素,以下且一一道來。
Thumbnail
說到網路小說,跟我同齡的人應該都會想到「痞子蔡、藤井樹、橘子、九把刀」吧?那是手機還沒辦法上網的年代,那是正版意識還沒抬頭的年代,那是上課時間能用藍芽互傳「便簽」和小說檔的年代,那也是上課偷看小說老師還會縱容的年代。我的寫作啟蒙老師們應該就是這幾位作家,畢竟國家義務教育從來沒有教過學生如何寫出一
沒想到,我也有這一天! 人生來到了一個不知道要幹嘛的時期! 從很久以前,我就喜歡偶爾寫寫東西!但是也就只有偶爾寫而已! 最近幾年更是什麼都沒寫。 但最近人生不知道要幹嘛! 不如重操舊業,寫寫東西吧! 請大家多多指教!
Thumbnail
藤井樹的網路小說,陪我度過青少年時期 橘子的愛情小說,總會觸動到心裡細膩的情感
靈感不是天天有,今天想不出好題材,並不代表明天沒有好點子⋯⋯
Thumbnail
感恩的心,感謝有你。 是你們的支持, 誤我一生,讓我有勇氣做掉我自己。 感恩的心,感謝命運。 很開心,和你巧遇在這裡, 雖然我不知道,你們眼睛都在看哪裡。
Thumbnail
紀念文是吧! 這個音樂檔,我自己彈琴好像當時是在台北妹的租屋處,錄音的,用她的生財器具! 我當然彈 Yiruma - I 我 為什麼要紀念? 因為我這首背景音樂被認證了! 什麼意思呢?也不知道哪一天,我的YT頻道,突然這首曲子就被韓國的經紀公司還是什麼版權等等來源的等等,我也不太懂。 就被標籤