練習演算法題目的訣竅與經驗分享

更新於 2024/09/28閱讀時間約 2 分鐘

1.

競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情
通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫


2.

但是Easy分類的題目通常就是該領域最基礎的題目應該要會
如果想不到,可以試著從約束條件、進階提問follow-up、或者Hint尋求幫助。

如果還是毫無頭緒,很可能是基礎知識不足,需要先找一本看得懂,可以吸收的教材(比如說原本學校教過的課本,或者MIT、哈佛、史丹佛、Coursera...等國內外大學、教育平台的網路公開課)

如果是知道該用什麼演算法,但是實作coding就是卡卡的,東漏西漏,常常報compile error,很可能是程式語言的特性還不熟練,這點就需要回去加強練習該程式語言的基本語法與函示庫。(例如C++和其互相搭配的STL)


3.

練Leetcode題目時,不需要土法煉鋼式的從第一號題刷到最後一題,因為題目編號並沒有照難易度排,也沒有照分類排。

建議有條理的練習有分類的練習,一般入門、練手感建議從基本的Binary Tree、Array、String、Math...等標籤分類開始,接著開始練習專門領域DP、Greedy、Divide and Conquer、Sliding window、Two pointers、Graph...等。

從Easy 開始往Medium邁進,Hard有多餘時間再做,太難的往往遇到機會也比較低,或者太過於刁鑽。


4.

學會的題目,在第一次通過之後的兩~三天,務必在不看答案的情況下再做一次,加深印象並且強化、鞏固知識點(這點和大腦的自然遺忘曲線有關)。

做題目依該像蹲馬步,基本功穩健先求演算法徹底理解、熟練,之後才逐漸開始衝刺題目數量。

在不熟練演算法、資料結構、程式語言特性的情況下,盲目地刷題只是徒勞,耗費一堆時間,看了很多但是也忘了很多,而且也不紮實。

妥善利用 Leetcode建立好的學習卡片,針對某個領域去加強練習,熟悉演算法框架。

Explore - LeetCode


5.

試著輸出。不論是教其他同學,或者畫圖、做筆記都是很好的方式。

Teaching is learning.

當你能把另一個人給教懂,徹底理解,並且說明其精隨與關鍵知識點,說明你已經掌握這道題目的考點、可能的變化衍伸與演算法、資料結構...等相關背景知識


avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目會給定我們一個陣列,要求我們找出裡面出現次數最多的數字。 出現次數最多的數字也就是我們在統計上所謂的 眾數 mode
題目會給一個輸入陣列,裡面的數字分別代表每個index對應到的高度,要求我們計算山峰與低谷的數目,總共有多少個。 山峰 Hill: 比最靠近高度不相同的兩個鄰居的高度還要高。 低谷 Valley:比最靠近高度不相同的兩個鄰居的高度還要低。
題目會給一個輸入陣列,要求我們判斷所有的數字是否構成一組單調數列。 也就是全部的數字構成一條單調遞增數列(逐漸變大), 或者一條單調遞減數列(逐漸變小)?
題目會給我們一個陣列,分別代表高低各不同的隔板高度,問我們從降雨之後,最多可以儲存多少水量?
雖然表面是一道移除元素的題目,但實際上考的還是搬移。 題目要求的是把val目標值移除,等價於 把非目標值的搬到前面,並且回傳這些剩下來的元素個數(也就是 陣列裡面,非目標值的元素總數​)。 請看下方範例,會更好理解。
題目會給定我們一個陣列,要求我們重新安排順序,把等於零的數字搬到後面。 同時必須保持原本數字的前後相對次序。
題目會給定我們一個陣列,要求我們找出裡面出現次數最多的數字。 出現次數最多的數字也就是我們在統計上所謂的 眾數 mode
題目會給一個輸入陣列,裡面的數字分別代表每個index對應到的高度,要求我們計算山峰與低谷的數目,總共有多少個。 山峰 Hill: 比最靠近高度不相同的兩個鄰居的高度還要高。 低谷 Valley:比最靠近高度不相同的兩個鄰居的高度還要低。
題目會給一個輸入陣列,要求我們判斷所有的數字是否構成一組單調數列。 也就是全部的數字構成一條單調遞增數列(逐漸變大), 或者一條單調遞減數列(逐漸變小)?
題目會給我們一個陣列,分別代表高低各不同的隔板高度,問我們從降雨之後,最多可以儲存多少水量?
雖然表面是一道移除元素的題目,但實際上考的還是搬移。 題目要求的是把val目標值移除,等價於 把非目標值的搬到前面,並且回傳這些剩下來的元素個數(也就是 陣列裡面,非目標值的元素總數​)。 請看下方範例,會更好理解。
題目會給定我們一個陣列,要求我們重新安排順序,把等於零的數字搬到後面。 同時必須保持原本數字的前後相對次序。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
和一群人工作不容易的地方是整合意見。有的人沉默,有的人意見分歧。 我出力處理了工作,最後要交稿的時候,有人持了不同的意見,希望修改。 我的內在當浮現「我的文稿寫得較好」時, 我要自己停止這樣想,我提醒自己「在這世上沒有絕對的好或壞」。我正在對峙自己的分別心和優越感。接著提醒自己「尊重他人有他的詮
Thumbnail
20230731 昨天小狐狸午睡結束,我收一收廚房,帶他去巷子散步。 走一小段路,他就停下腳步討抱,我說「我們走走路吧。」他仍堅持要被抱。因為沒有動,所以我們兩個都被蚊子叮。 我捱不過這個緊張情勢,抱起他。我說:「好,可以抱你,我們先進家裡噴防蚊液。」 全身上下噴完自己做的防蚊液,想說到
Thumbnail
本文探討觸發物對於行為改變的重要性,分析觸發物的類型、來源及其對情緒的影響。強調改變行為需正視自身的觸發物,並提供實現持久改變的具體步驟,鼓勵讀者走出舒適圈,面對挑戰,制定行動計劃。期望能激勵更多人探索自我,達成目標。
每次在學校練習寫名字時(大班教),幼兒園老師蠻頭痛,因為一次只能教一位,在教孩子時同時要管秩序,那時我們班上有15位同學,不會有協助人員幫忙,我從孩子中班就在煩惱這件事,某一天在上研習課時,下課太無聊了去看別的老師的角落佈置,發現了老師A4只列印孩子的姓名,而且有資料夾裝著,我就知道這是要用白板筆寫
Thumbnail
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
Thumbnail
小老闆說要練習拒絕,因為幫人9次,到第10次不幫忙,前面這9次的幫忙都直接被擦去,這個人只記得你「不幫忙」! 不能幫忙,一定是因為我也有困難,要找個合情合理的拒絕理由,還要讓對方不要有被拒絕的難受感覺,這真是太難了。
Thumbnail
騎車在外的路上一個閃失都有可能造成意外的發生,然而就再前天的一個路口,因後方車輛要超車而差點發生車禍,好在我預先看後視鏡才避免掉有可能發生的意外,其實騎車最怕大意,以為的沒問題的路況卻給你來個突而其來的變化,但那天在接近意外發生一個觀看後視鏡的動作甚至可以說是我一命,雖說這個動作是我的一個習慣,但不
Thumbnail
「但,就算你沒有用,就算你什麼事都不做,還是可以被愛的。」 「怎麼可能,那樣很自私。」 「怎麼會?這才是愛應該有的樣子。」 - 在你無條件愛著我時,我才發現原來我可以更堅強地活著。
Thumbnail
在這些過程中的感覺: 要留意的可能是有時候會出現的心態:我都做這麼多了,為什麼你們還看不見、不懂、不明白?當這樣的感受出現時,內心裡會有另外一股聲音質疑自己:是不是方法不對?或者你並沒有真正站在他人的角度去思考這件事。另外,情況持續沒有改善時,放棄的念頭也會出現。但我發現,當放棄的念頭出現時....
Thumbnail
人最討厭的就是變數,然而最喜歡的也是改變後的成果。停滯不前、不敢往前、猶豫不決,害怕做了這件事,是否帶來的不是好結果;害怕做了那件事,生活不如現在的生活。 人生的路,曲曲折折才是美滿。當進入一個學習的階段,對於發生的事情感到不開心、困擾、害怕......,也許這過程你艱難地走著,有時迷惘、有時想..
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
和一群人工作不容易的地方是整合意見。有的人沉默,有的人意見分歧。 我出力處理了工作,最後要交稿的時候,有人持了不同的意見,希望修改。 我的內在當浮現「我的文稿寫得較好」時, 我要自己停止這樣想,我提醒自己「在這世上沒有絕對的好或壞」。我正在對峙自己的分別心和優越感。接著提醒自己「尊重他人有他的詮
Thumbnail
20230731 昨天小狐狸午睡結束,我收一收廚房,帶他去巷子散步。 走一小段路,他就停下腳步討抱,我說「我們走走路吧。」他仍堅持要被抱。因為沒有動,所以我們兩個都被蚊子叮。 我捱不過這個緊張情勢,抱起他。我說:「好,可以抱你,我們先進家裡噴防蚊液。」 全身上下噴完自己做的防蚊液,想說到
Thumbnail
本文探討觸發物對於行為改變的重要性,分析觸發物的類型、來源及其對情緒的影響。強調改變行為需正視自身的觸發物,並提供實現持久改變的具體步驟,鼓勵讀者走出舒適圈,面對挑戰,制定行動計劃。期望能激勵更多人探索自我,達成目標。
每次在學校練習寫名字時(大班教),幼兒園老師蠻頭痛,因為一次只能教一位,在教孩子時同時要管秩序,那時我們班上有15位同學,不會有協助人員幫忙,我從孩子中班就在煩惱這件事,某一天在上研習課時,下課太無聊了去看別的老師的角落佈置,發現了老師A4只列印孩子的姓名,而且有資料夾裝著,我就知道這是要用白板筆寫
Thumbnail
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
Thumbnail
小老闆說要練習拒絕,因為幫人9次,到第10次不幫忙,前面這9次的幫忙都直接被擦去,這個人只記得你「不幫忙」! 不能幫忙,一定是因為我也有困難,要找個合情合理的拒絕理由,還要讓對方不要有被拒絕的難受感覺,這真是太難了。
Thumbnail
騎車在外的路上一個閃失都有可能造成意外的發生,然而就再前天的一個路口,因後方車輛要超車而差點發生車禍,好在我預先看後視鏡才避免掉有可能發生的意外,其實騎車最怕大意,以為的沒問題的路況卻給你來個突而其來的變化,但那天在接近意外發生一個觀看後視鏡的動作甚至可以說是我一命,雖說這個動作是我的一個習慣,但不
Thumbnail
「但,就算你沒有用,就算你什麼事都不做,還是可以被愛的。」 「怎麼可能,那樣很自私。」 「怎麼會?這才是愛應該有的樣子。」 - 在你無條件愛著我時,我才發現原來我可以更堅強地活著。
Thumbnail
在這些過程中的感覺: 要留意的可能是有時候會出現的心態:我都做這麼多了,為什麼你們還看不見、不懂、不明白?當這樣的感受出現時,內心裡會有另外一股聲音質疑自己:是不是方法不對?或者你並沒有真正站在他人的角度去思考這件事。另外,情況持續沒有改善時,放棄的念頭也會出現。但我發現,當放棄的念頭出現時....
Thumbnail
人最討厭的就是變數,然而最喜歡的也是改變後的成果。停滯不前、不敢往前、猶豫不決,害怕做了這件事,是否帶來的不是好結果;害怕做了那件事,生活不如現在的生活。 人生的路,曲曲折折才是美滿。當進入一個學習的階段,對於發生的事情感到不開心、困擾、害怕......,也許這過程你艱難地走著,有時迷惘、有時想..