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

閱讀時間約 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.

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


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