[ALG101] 先別急著寫leetcode - Lidemy 鋰學院
文章推薦指數: 80 %
如果你刷題刷得很快樂,覺得沒碰到什麼障礙,而且程式能力的確有提升,那當然可以開開心心繼續刷題。
但我知道有些人一定不是這樣。
有些人光是leetcode easy 的題目就可以 ...
[ALG101]先別急著寫leetcode
把基礎打穩再說。
先學會走,才開始練習跑步
課程介紹
現在就上課,
完全免費
×
offoriginalprice!
Thecouponcodeyouenteredisexpiredorinvalid,butthecourseisstillavailable!
在這幾年裡面,「刷題」這件事成了顯學。
當你上網去問問題的時候,總有一群人不斷強調著刷題這件事。
該怎麼找到好工作?刷題。
怎麼進FAANG?刷題。
怎麼讓薪水更高?刷題。
這邊的刷題通常指的就是去知名網站leetcode上面寫題目,寫越多題代表越厲害,練到一定數量的題目以後就可以在面試中得到較好的成效,因為題目你很有可能都看過了。
雖然我個人不是很喜歡刷題的「刷」這個字(純粹個人喜好問題),但我其實不反對刷題。
在《程式解題新手入門注意事項》一文中我是這樣說的:
=====
其實我一直不是很喜歡「刷題」這個詞,主要是因為「刷」這個字。
不知道大家對這個字的解讀是什麼,但我會認為有種「為了寫題目而寫題目」的感覺,就好像題海戰術那樣。
雖然說題海戰術用得好的話成效滿顯著的,但總感覺很多人刷到最後會變成「看過的題目就會,沒看過的就一定不會」,如果是這樣子的話,那我覺得不是一件好事。
之前我有寫了一篇文章:當我們在學程式時,要學的到底是什麼?,稍微談了一下這件事情。
總之呢,比起刷題這個詞,我更喜歡用「程式解題」四個字來表達我想表達的意思。
有很多人剛開始練習程式解題的時候,是從演算法與資料結構開始的。
可能去找了一些書或是線上課程來看,接著從經典的開始,例如說泡沫排序、選擇排序、插入排序,再來是困難一些的合併排序以及快速排序等等。
但我覺得對真正的初學者來說,學這些還太早了。
======
如果你刷題刷得很快樂,覺得沒碰到什麼障礙,而且程式能力的確有提升,那當然可以開開心心繼續刷題。
但我知道有些人一定不是這樣。
有些人光是leetcodeeasy的題目就可以想好久還解不出來,看了解答發現好像沒那麼難,但是等到自己要重新實作時又是一頭霧水。
看了別人的解法覺得別人code寫得好漂亮,怎麼一兩行就可以解出來了,自己卻寫了十幾行。
解的題目慢慢變多,但卻沒有覺得自己變強了。
總覺得,哪些地方好像怪怪的,好像缺了點什麼。
我覺得你缺的不是刷題,不是那些資料結構與演算法,而是基礎,是程式思維。
對於完全初學者或者是比較沒有程式概念的新手來說,我覺得去leetcode刷題是本末倒置的事。
我最常講的一句話就是:「你如果連九九乘法表都寫不出來,跟別人刷什麼題」
如果順序安排得好,可以幫助你在程式解題這條路上走得更穩固而且開心,底下是我個人認為合理的順序:
打好程式基礎
學習資料結構與演算法
去leetcode練習題目
而這堂課所著重的就是「1.打好程式基礎」,而且只著重在這一點。
這堂課在教什麼?
教那些我認為被忽略掉的,新手應該要學、要練習的程式基礎。
包括但不限於:
充當人體編譯器,以電腦的思維模式去看程式碼
在寫程式碼以前,先把解法用白話文或是虛擬碼寫出來
仔細觀察題目內容以及輸入範圍
熟悉迴圈、判斷式、函式以及其他程式基礎語法的使用
實作內建函式增加對語法熟悉度
練習大量程式基礎題,直到你覺得這些題目超簡單為止
這堂課一共有九個單元,從每個單元的標題就可以大概知道在講什麼:
Unit0:課程簡介
Unit1:要學好程式,從不要寫程式開始
Unit2:寫程式之前,先學會「看程式」
Unit3:寫程式前的最後一步:看懂題目
Unit4:主角總是最後才登場:寫程式囉
Unit5:經典題目解解看
Unit6:內建函式做做看
Unit7:國中題目大挑戰
Unit8:初學者只管拿分,誰管你什麼效率
Unit9:未來的路還很漫長,你還差得遠呢
課程主要使用的程式語言為JavaScript,但其實大多數地方都是在講程式概念以及程式思維,跟程式語言本身無關,因此就算你完全不會JavaScript但是會其他程式語言,還是可以修這門課。
而課程搭配的OJ系統支援:C/C++/Python/Java/JavaScript這五種程式語言。
什麼人適合這堂課?
有學過程式的人,知道基礎語法(宣告變數、判斷式、迴圈以及函式)
剛學程式沒有很久,想增進程式基礎的人
寫leetcode寫得非常挫折,覺得超級難的人
寫不出九九乘法表的人
覺得「程度測驗」的題目很難的人
那什麼人不適合這堂課?
完全不會寫程式的人
寫leetcode覺得沒什麼問題的人
修過資料結構與演算法,大部分都聽得懂的人
覺得「程度測驗」的題目很簡單的人
是的,為了讓大家更方便檢驗自己到底需不需要修這堂課,我提供了一個簡單的程度測驗。
程度測驗題目連結
先介紹一下LidemyOJ(簡稱LIOJ),是我用青島大學開源出來的OJ稍微改造一下之後架出來的,是特地為了搭配這個課程而建立的系統。
程度測驗題目一共有五題,你不需要寫出程式碼,只需要用看的就可以了。
通過標準為:覺得這五題都很簡單。
如果你完全不知道什麼是OJ,或者是覺得這五題不簡單,那就很適合這門課。
為什麼想開這門課?因為我覺得這是一堂,滿多人都想不到可能會有人需要的課,所以沒有看到太多類似的課程。
為什麼呢?因為對許多跟我一樣比較有程式思維的人來說,有些東西太直覺了,太簡單了。
比如說我這個課程裡面提到的題目,以及在LIOJ上面出現的題目還有上面的程度測驗,在我剛學程式沒多久的時候,就覺得很簡單了。
而這些題目的程度大概也是大學資工系第一堂程式語言的課期中考以前的範圍。
所以對很多人來說,這些題目幾乎天生就是水題,寫起來像吃飯喝水一樣簡單的題目。
但後來經過一段時間的教學以後,我發現一件事情,那就是寫應用程式不一定會鍛鍊到這一塊,而且也鮮少有課程專門在練習這一塊!當我知道我有學生寫的出來我認為相對複雜的留言板或是其他程式,卻寫不出來九九乘法表或是判斷質數的時候,我的內心是震驚的。
因為我以為這兩個是相通的,你會A就會B。
可是事實證明不是,這兩塊是分開的。
你可以寫出一堆好玩的應用,但卻不知道九九乘法表該怎麼寫。
有人會問說:這重要嗎?
當在你工作上碰到比較複雜一點的商業邏輯時就顯得很重要了。
我這課程可不是什麼造火箭的課程,在程式解題的領域中,這堂課可能就跟學習怎麼打字一樣,是最基礎最基礎的一塊,這也是為什麼這一塊如此重要。
有些人天生就比較有這一塊的基礎,上手很快,所以覺得這沒什麼。
但我親眼看見也有另外一群人,比較缺乏這一塊的理解,因此在一些地方碰了壁。
所以這堂課就是為了這些初學者,希望能夠從頭開始練習,慢慢去培養這些程式思維,並且藉著程式解題去鍛鍊程式能力。
上課方式
這堂課一共有九個單元,第零個單元是課程介紹,所有的課程影片都已經錄好了。
而每個單元都會有一個Project,就是作業的意思啦。
在課程影片裡面會有兩到三個實戰,可以讓你跟著實戰一起做一遍題目,也可以在看完影片之後重新複習確認自己有理解。
而Project的目的就是為了讓你練習,才能知道自己是不是真的有吸收進去。
每一個Project都會有一些題目,而這些題目都會搭配作業檢討影片,在影片裡面我會示範我自己的解法。
請務必在觀看作業檢討影片之前自己先努力嘗試過,真的解不出來才來參考影片,才能得到最佳的學習成效。
所以這堂課的學習順序就是:
看課程影片-教學部份
看課程影片-實戰部分
寫作業練習
看課程影片-作業檢討
最後再強調一點,這堂課是完全免費的。
為什麼是免費的?因為我期望這堂課可以成為一堂初學者必修的課,就跟之前我把Hahow上的課程下架時所講的一樣:
作為一堂基礎課程,就代表無論你修哪一個程式語言,你都可以在這邊找到有用的參考資料。
我希望這樣子的課程是免費的,是可以公開給大家的,而我也確信這樣可以幫到更多的學生。
祝大家學習愉快!
如果對這堂課的製作流程有興趣,可以參考:《先別急著寫leetcode》線上課程製作全記錄
學習相關資源:
Lidemy粉絲專頁
LidemyTelegram頻道
LidemySlack
先別急著寫leetcode資源彙整(包含大綱、投影片以及範例程式碼)
你的老師
胡立
寫過一點後端也寫過前端,還寫了一堆你應該看過卻不知道作者是我的技術文章,致力於推廣淺顯易懂的程式教學。
在新加坡工作過兩年半,是專職的前端工程師。
一直都對教學有很大的熱忱,相信把話講得清楚又明白是一種專業,相信分享與交流可以讓世界更美好。
我不喜歡把自己講的很厲害,也不喜歡用學經歷說明什麼——我都用作品說話。
底下是我寫過的幾篇文章:
1.零基礎的小明要如何成為前端工程師?2.成為前端工程師的四週年回顧3.從拉麵店的販賣機理解什麼是API4.紮實的網頁前端學習路線與資源推薦5.當我們在學程式時,要學的到底是什麼?
我在自己的blog以及Medium上面,常常發表許多心得,也曾經免費提供程式教學,希望能幫助那些剛踏入程式界的初心者們。
如果你想更了解我,可以參考:自學、哲學、講學:我的程式之路以及一個工程師的履歷進化史。
在嘗試過許多教學方法之後,終於決定自己跳下來開一個為初學者而生的線上程式課程平台。
課程
Unit0:課程簡介
Availablein
days
days
afteryouenroll
預覽
課程簡介
(6:21)
預覽
課程相關資源
預覽
Unit0.0:什麼人適合這堂課?
(2:42)
預覽
Unit0.1:為什麼要上這堂課?
(2:05)
預覽
Unit0.2:課程進行方式
(3:18)
預覽
Unit0.3:Project0介紹
(3:32)
Unit1:要學好程式,從不要寫程式開始
Availablein
days
days
afteryouenroll
預覽
Unit1大綱
預覽
Unit1.1:Whatthefunk,都說了先不要
(5:54)
預覽
Unit1.2:時間一天一天一天的走,程式碼一行一行一行的跑
(6:47)
預覽
Unit1.3:如何撰寫pseudocode?
(2:58)
預覽
Unit1.4:實戰練習:印出1-100的奇數
(3:21)
預覽
Unit1.5:實戰練習:fizzbuzz
(3:39)
預覽
Unit1.6:實戰練習:找最小值
(5:22)
預覽
Unit1.7:Project1介紹
(1:02)
Start
作業檢討:Project1字串反轉
(3:18)
Start
作業檢討:Project1陣列總和
(2:24)
Start
作業檢討:Project1找最大值
(1:37)
Unit2:寫程式之前,先學會「看程式」
Availablein
days
days
afteryouenroll
預覽
Unit2大綱
預覽
Unit2.1:你其實看不懂程式碼
(8:04)
預覽
Unit2.2:人體編譯器
(5:48)
預覽
Unit2.3:Debug神器:Debugger
(8:55)
預覽
Unit2.4:Log雖可恥但有用
(7:59)
預覽
Unit2.5:實戰練習:找次大值
(5:41)
預覽
Unit2.6:實戰練習:字串轉大寫
(9:38)
預覽
Unit2.7:實戰練習:刪除特定字元
(2:29)
預覽
Unit2.8:Project2介紹
(5:56)
預覽
作業檢討:Project2找次小值
(2:46)
預覽
作業檢討:Project2大小寫互換
(7:06)
預覽
作業檢討:Project2印出因數
(3:41)
Unit3:寫程式前的最後一步:看懂題目
Availablein
days
days
afteryouenroll
預覽
Unit3大綱
預覽
Unit3.1:弄清題意,翻成白話文
(5:00)
預覽
Unit3.2:最重要的小事:輸入範圍
(14:18)
預覽
Unit3.3:輸入與輸出方式
(2:01)
預覽
Unit3.4:Project3介紹
(1:33)
預覽
作業檢討:Project3LIOJ1010:靈魂伴侶
(1:03)
預覽
作業檢討:Project3LIOJ1015:音速小子
(1:12)
預覽
作業檢討:Project3LIOJ1017:貪婪的小偷
(4:25)
Unit4:主角總是最後才登場:寫程式囉
Availablein
days
days
afteryouenroll
Start
Unit4大綱
Start
Unit4.1:從虛擬碼到程式碼
(7:37)
Start
Unit4.2:函式填空法
(13:50)
Start
Unit4.3:簡化法
(6:04)
Start
Unit4.4:寫程式三寶:迴圈、函式、判斷式
(2:15)
Start
Unit4.5:實戰:印出金字塔
(6:06)
Start
Unit4.6:實戰:九九乘法表
(11:13)
Start
Unit4.7:實戰:印出1-100的平方數
(4:33)
Start
Unit4.8:Project4介紹
(3:20)
Start
作業檢討:Project4LIOJ1023:印出聖誕樹
(6:55)
Start
作業檢討:Project4LIOJ1024:NN乘法表
(3:48)
Start
作業檢討:Project4LIOJ1025:水仙花數
(22:45)
Unit5:經典題目解解看
Availablein
days
days
afteryouenroll
Start
Unit5大綱
Start
Unit5.1:達到什麼程度才能解經典題目?
(2:04)
Start
Unit5.2:實戰:判斷等差數列
(11:36)
Start
Unit5.3:實戰:身分證驗證
(16:58)
Start
Unit5.4:實戰:數字位數加總
(5:46)
Start
Unit5.5:Project5介紹
(1:14)
Start
作業檢討:Project5LIOJ1026:判斷等比數列
(4:35)
Start
作業檢討:Project5LIOJ1027:信用卡號驗證
(14:03)
Start
作業檢討:Project5LIOJ1028:生命靈數
(5:52)
Start
作業檢討:Project5LIOJ1029:加減乘除
(2:03)
Start
作業檢討:Project5LIOJ1030:判斷迴文
(4:10)
Start
作業檢討:Project5LIOJ1031:完全平方和
(2:20)
Start
作業檢討:Project5LIOJ1032:平面距離計算
(6:45)
Start
作業檢討:Project5LIOJ1033:最近點對
(10:26)
Start
作業檢討:Project5LIOJ1034:凱薩加密
(6:15)
Start
作業檢討:Project5LIOJ1046:圈圈叉叉
(6:25)
Unit6:內建函式做做看
Availablein
days
days
afteryouenroll
Start
Unit6大綱
Start
Unit6.1:練習實作內建函式
(1:38)
Start
Unit6.2:實戰:Array.map
(5:24)
Start
Unit6.3:實戰:String.repeat
(1:39)
Start
Unit6.4:實戰:Array.lastIndexOf
(4:43)
Start
Unit6.5:Project6介紹
(3:34)
Start
作業檢討:Project6LIOJ1036:Arrayreverse
(3:37)
Start
作業檢討:Project6LIOJ1037:Arrayfilter
(5:32)
Start
作業檢討:Project6LIOJ1038:ArrayindexOf
(2:39)
Start
作業檢討:Project6LIOJ1039:Arrayfill
(2:42)
Start
作業檢討:Project6LIOJ1040:Arrayjoin
(7:13)
Start
作業檢討:Project6LIOJ1041:Stringtrim
(10:00)
Start
作業檢討:Project6LIOJ1042:StringtoLowerCase
(2:29)
Start
作業檢討:Project6LIOJ1043:StringendsWith
(7:11)
Start
作業檢討:Project6LIOJ1044:StringpadEnd
(6:59)
Start
作業檢討:Project6LIOJ1045:Stringslice
(2:37)
Unit7:國中題目大挑戰
Availablein
days
days
afteryouenroll
Start
Unit7大綱
Start
Unit7.1:NPSC是什麼?
(6:32)
Start
Unit7.2:如何使用NPSC的測資?
(4:14)
Start
Unit7.3:實戰:NPSC2019國中組初賽
(6:16)
Start
Unit7.4:實戰:NPSC2008國中組初賽
(10:06)
Start
Unit7.4:補充換行字元相關知識
(3:15)
Start
Unit7.5:Project7介紹
(0:55)
Start
作業檢討:Project7LIOJ1008:幾個水桶
(10:40)
Start
作業檢討:Project7LIOJ1009:Yo!倒著唸!
(4:20)
Start
作業檢討:Project7LIOJ1013:搭電梯
(9:55)
Start
作業檢討:Project7LIOJ1014:不九人世
(4:16)
Start
作業檢討:Project7LIOJ1016:不合群的人
(4:45)
Unit8:初學者只管拿分,誰管你什麼效率
Availablein
days
days
afteryouenroll
Start
Unit8大綱
Start
Unit8.1:淺談時間與空間複雜度
(14:13)
Start
Unit8.2:電腦比你想得厲害
(2:20)
Start
Unit8.3:實戰:LIOJ1035:簡易排序
(4:20)
Start
Unit8.4:實戰:LIOJ1047:搜尋數字
(7:09)
Start
Unit8.5:實戰:LIOJ1048:最大連續和
(7:14)
Start
Unit8.6:Project8介紹
(0:57)
Start
作業檢討:Project8LIOJ1049:陣列最短距離
(4:55)
Start
作業檢討:Project8LIOJ1050:twosum
(6:21)
Start
作業檢討:Project8LIOJ1051:逆序數對
(4:36)
Unit9:未來的路還很漫長,你還差得遠呢
Availablein
days
days
afteryouenroll
Start
Unit9大綱
Start
Unit9.1:淺談資料結構
(8:49)
Start
Unit9.2:淺談演算法
(3:29)
Start
Unit9.3:實戰:LIOJ1035:簡易排序
(8:54)
Start
Unit9.4:實戰:LIOJ1047:搜尋數字
(10:23)
Start
Unit9.5:實戰:LIOJ1048:最大連續和
(11:30)
Start
Unit9.6:結語
(4:57)
Start
Unit9.7:Project9介紹
(1:08)
Start
先別急著寫leetcode課程總結
趕快開始吧!
FreeCourse
CouponDiscount
免費
完全免費
現在就上課,
完全免費
延伸文章資訊
- 1LeetCode - The World's Leading Online Programming ...
LeetCode is the best platform to help you enhance your skills, expand your knowledge and prepare ...
- 2Leetcode 是什麼?誰需要刷題?工程師面試要刷到什麼程度?
Algorithm; Database; Shell; Concurrency. 最常見的以演算法為主,這次的系列將著重於此。 說穿了,刷LeetCode 好比學生時代刷題庫,目的是 ...
- 3什麼是LeetCode? - 一個人的文藝復興- Medium
LeetCode是一個收集軟體工程師面試考古題的線上練功網站。 (文章同步刊登於部落格,閱讀體驗更好) · LeetCode. Level up your coding skills and q...
- 4[ALG101] 先別急著寫leetcode - Lidemy 鋰學院
如果你刷題刷得很快樂,覺得沒碰到什麼障礙,而且程式能力的確有提升,那當然可以開開心心繼續刷題。但我知道有些人一定不是這樣。 有些人光是leetcode easy 的題目就可以 ...
- 5记录自己的leetcode解题之路。 - GitHub
LeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解,记录自己的leetcode解题之路。) - Git...