<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          刷 LeetCode 吃力正常嗎?

          共 6981字,需瀏覽 14分鐘

           ·

          2020-07-28 15:22

          鏈接:https://www.zhihu.com/question/31092580
          編輯:深度學習與計算機視覺
          聲明:僅做學術分享,侵刪

          C++ primer plus 過了一遍,今天做了 LeetCode 前幾題,感覺有點吃力,得在草稿上寫的明明白白才能理清思路。聽說 LeetCode 只是很簡單的算法。
          你刷LeetCode吃力么?
          作者:迷路
          https://www.zhihu.com/question/31092580/answer/54194793
          我剛做Leetcode的時候,一道 easy 都要想半天,現(xiàn)在除了大多數(shù)的hard,一般都能通過。
          大多數(shù)的 hard 都是特定領域的問題,如TCP的滑動窗口,編輯距離等。這些如果之前沒有做過, 是很難獨立完成的。我遇到問題的時候一般到?
          水中的魚?找答案。這個博主是 facebook 的工程的,但有些題目他也沒法立即想到答案或者最優(yōu)解。所以別太灰心,好好做,會有收獲的。
          建議一次只針對一種題型進行訓練,如數(shù)組、鏈表、二叉樹、回溯、動態(tài)規(guī)劃,這樣效果會更好。
          上個圖說明我刷得很艱難。。
          書籍方面《STL 源碼剖析》 和 《算法技術手冊》會幫你理解最常見的數(shù)據(jù)結構,查找和排序算法。

          作者:Cat Chen
          https://www.zhihu.com/question/31092580/answer/1014282264
          吃力是很正常的,我都覺得吃力呢。我至少是中學搞過競賽的,那時候已經(jīng)刷了很多題,但現(xiàn)在讓我去寫 LeetCode 的話還是要花時間的。(我中學靠競賽保送后就決定不再搞競賽了,所以肯定不如搞 ACM 的人熟練。)

          Easy 的題目是不用思考就可以說出來答案的,但實際寫的話還是要認真檢查各種 corner case 有沒有處理好,否則一不小心就有 bug,無法一次提交通過。

          Medium 的題目有幾種不同的情況,有些是問題比較難解決,有些是代碼寫起來超級復雜。對于前者,會需要花一定的時間想想怎么解,有可能能把題目轉(zhuǎn)化為其它已經(jīng)已經(jīng)做過的題目。對于后者,需要花時間思考怎樣寫的代碼能夠覆蓋所有 corner cases 但又 maintainable,而且寫完不仔細檢查很容易在某些地方留下小 bug,就變成了要通過多次提交來排 bug。

          Hard 的題目就隨緣吧,反正大概有一半是做不出來的。

          因為我面前端,大多數(shù)公司面前端的問題都不是 Hard 的算法題,更多是 Easy 或者 Medium 的難度加上必須要有真實前端經(jīng)驗才能解決,所以我不會去刻意刷題。

          「必須要有真實前端經(jīng)驗」是什么意思呢?例如說在大多數(shù) JavaScript 引擎里面,比較兩個字符串是否相等是 O(1) 而不是 O(n) 的操作,這個你知道就是知道,不知道就是不知道。如果你做過 JavaScript 性能優(yōu)化,或者至少是做過性能分析來找瓶頸,那你很有可能遇到過這類問題從而知道這一點。

          不過有一個事情是這樣子的:其實在面試時,你不一定要做到最優(yōu)解,你可以有些小 bug 但最好你自己能檢查出來然后改對。(面試更看重的是跟面試官一起解題的能力,而不是獨自一個人寫出完美解的能力。很多人理解不到這一點,因為這跟學校的考試規(guī)則完全不一樣。細節(jié)參考我其它答案。)所以在訓練時對你自己要求更高一些,到面試時就可以放松做。

          總之這個事情你可以理解為跟訓練跑馬拉松差不多。今時今日已經(jīng)有很科學的馬拉松訓練方法,能讓絕大多數(shù)人在一個月到幾個月的時間內(nèi)從零開始訓練到能夠跑完馬拉松(合理時間內(nèi)跑完)。這個過程大多數(shù)人只有有意志力都能堅持下來,但不代表它不痛苦。


          作者:趙瑜
          https://www.zhihu.com/question/31092580/answer/477447691
          正常。樓主應該還想問怎么刷這類oj比較合理,下面是個人一些經(jīng)驗,僅供參考。
          首先要確定刷題的目標,如果不是為了面試,那么節(jié)奏完全可以個人把握。如果是面試那么個人以為很多答主的方法實際上是有問題的。
          1. 每道題要有time constraint。大部分oj的題目如果需要想+寫超過半小時,那就等于完全不會。實際面試中(任何考試中),你碰到的題目是不可能讓你做超過1天的。所以每道題必須掐時間做,做不出來直接看答案,之后碼一遍AC的代碼。第二天重新做?。。?/span>

          2. 大部分Hard難度的題、brain teaser,個人以為是面試的幫助都不大。因為刷題的目的不是碰到原題,而是解決思路相似的題目。LeetCode hard難度題目難度遠大于個人面FG new grad時候的題目難度。實際上FG new grad的phone interview 以及onsite難度個人以為屬于medium里面比較容易的。

          3. 難以復現(xiàn)(以類似思路出現(xiàn))的題目看看就好了。2里面的題目個人就是屬于這種情況,個人認為easy里面一些math的題目,都基本不具有參考價值。

          4. 除了題目里面的算法內(nèi)容,刷題還是需要注意些基本編程規(guī)范的,畢竟大部分公司面試都不會只讓你寫pseudo code。注意programming to interface之類的準則,因為面試里面會問到!

          5. 學好英語

          個人背景:本科非CS,研究生CS。LeetCode刷了500道題左右,刷了5-6遍,第一次刷的時候一天做題加看答案只能做20道題。最后兩遍刷的時候,weekly contest的medium可能就要5-10分鐘。到這個程度的時候個人認為onsite的算法題已經(jīng)不是任何問題了,F(xiàn)G的面試很隨意了。


          作者:九四干
          https://www.zhihu.com/question/31092580/answer/742703012
          寫在前面的話:
          大家好, 我是敲了1年LeetCode實習生,想分享自己一點經(jīng)驗,讓你們少走一點彎路!還有, 我不是大神, 只是喜歡敲LeetCode的小學生!

          首先, 大多人說自己沒有編程基礎,?LeetCode太費力!其實這個完全不用擔心, 因為我就是零基礎,在敲LeetCode甚至連一門編程語言都沒學過(只會一點python)!什么BFSDFS,動態(tài)規(guī)劃。。。什么都不懂!LeetCode還是通過我找工作小伙伴知道的, 之后一發(fā)不可收拾。所以沒有編程基礎完全可以刷,但是要掌握一些方法(后面我會介紹)。

          其次, 敲LeetCode沒用, 還是找不到工作;能不能找到工作我不知道,但是我確確實實從中得到一些好處,把它用于生活中。

          1. 獨立解決問題能力,編程能力相當與解決問題能力, 長時間編程能力的鍛煉, 可以提高解決問題的能力。生活中也會遇到困難, 我總會習慣性去想辦法解決, 相信方法總比困難多。

          2. 思維能力, 編程時候我們要把所有可能性想到,會有好多邊界情況, 需要考慮極端情況;這個思維也可以用在生活中,我會下意識想到這個問題發(fā)展最好情況,最差情況。。。想辦法解決各種情況,所以考慮問題會很全面,做起事來游刃有余。

          3. 專注能力,現(xiàn)在是娛樂至死的時代,能靜下心做的事越來越少。當你做題思考時候,你必須要沉靜其中,讓心流遍布全身,那種感覺真的很舒服!這種快樂不是那些及時快樂相比的?,F(xiàn)在最值錢的不是時間,不是金錢,而是你的專注力。資本剝削就是剝削你的專注力...反正專注能力很重要,值得鍛煉。

          4. 時間空間, 編程時候我們總是盡可能節(jié)省空間, 時間做到一點也不浪費!在生活中, 你也會無意識去思考這些, 讓自己更快,更好完成它。如何用空間換時間,用時間換空間?相對于最少資源得到最大利益,讓自己生活飛起來。

          5. 還有,很多很多。。。

          最后,還要人說LeetCode太難了, 自己太笨做不了。天賦決定上限,努力決定下限。先努力做到目前你能做到的最好,然后再說不行。要相信一萬小時定律,傻子都能成為天才。我們先試一試->不行->再堅持一下->不行->再堅持一下->不行->放棄!做點其他想做的事,人生其實就是在不斷的嘗試,才能找到自己想走的路。開心才是最重要的,改變世界就是那幾個人,大多數(shù)人渺小到可有可無,我們能做到就是讓自己開心,讓自己生活有意義!

          好了, 下面介紹我敲LeetCode方法,大家可以借鑒。

          我采取的方法

          1. 快刀斬亂碼
          2. 慢工出細活
          3. 堅持

          第一步, 快刀斬亂碼

          就是一個字, 一開始刷的時候, 不知道有哪些算法?我們可以按照LeetCode標簽每種類型做個幾題。一開始不知道怎么做,沒事!思考十分鐘, 想不出來直接看別人代碼, 把它的邏輯搞清楚。然后自己手敲一遍(不看他人代碼, 自己想邏輯)。這個很關鍵!不去思考,看著別人代碼敲, 只能練手速, 該不會還是不會!
          我們迅速把各種題型過一遍,做到心里有數(shù)。

          第二步, 慢工出細活

          就是一個字慢,對于一個問題, 我們考慮它的各種解法,去總結, 發(fā)現(xiàn)其中規(guī)律?。

          第三, 最重要堅持

          我當時刷LeetCode,每天兩題,一開始需要4,5個小時,隨著你每天練習,時間慢慢變短,而且肉眼感受到自己的進步!很有成就感!人只所以堅持, 是他認為有意義, 把敲LeetCode賦予重大意義, 每個人都可以!

          再寫一點建議,

          我們不是天才, 真的有些大神周賽 10分鐘就敲出來了, 我認識一個大神(周賽前幾名),他認為LeetCode都是水題,可能一輩子我也達到不了這種水平, 但是每天讓自己大腦處于思考情況, 做事邏輯清楚,還有它給我?guī)韮?nèi)心平靜,感覺世界很靜,自己很舒服!其實就夠了!

          我們在敲的時候,養(yǎng)成一些好習慣。我們畢竟不是acmer, 不需要刻意追求速度, 養(yǎng)成見名知意變量命名習慣;養(yǎng)成寫注釋的習慣;養(yǎng)成估算自己算法時間復雜度,空間復雜度(我還要鍛煉)習慣;。。。。別看這些一開始很難, 當你養(yǎng)成習慣了,以后都是無腦事情,一點也不累!

          真的希望大家, 不是為了面試而找敲算法,而是培養(yǎng)自己喜歡思考的習慣!讓自己一直處于進步狀態(tài)!算法不僅僅只屬于計算機,生活中處處都能看到, 你玩的拼圖游戲(DFS)。。。都是算法.


          作者:冰雪聰明小姐
          https://www.zhihu.com/question/31092580/answer/487445817
          985CS畢業(yè),來美帝讀研,要刷leetcode找實習。我本科不搞ACM,所以算法基礎很一般。一共刷了250道左右吧。

          第一遍刷的什么都沒記住,花了半年。

          第二遍研究生入學刷的,有的題感覺都沒見過,剩下的有印象,但是我發(fā)現(xiàn)我的解法和第一次都差不多。中間面了微軟on campus掛了,是真的菜啊。

          第三遍是拿了Google面試,只刷狗家tag下邊的題,高頻題刷了兩遍,面經(jīng)又過了一遍,背靠背第二面咖喱英語的follow-up沒聽懂,掛了,很氣。

          后來面Facebook,那時候tag有128道題,我刷了108道,保守估計每道題3遍,包括手打兩遍,白紙一遍。沒有遇到一個國人面試官,一面電面,美國人,兩道m(xù)edium,二面onsite三道題,因為我說我見過3sum,面試官在我說完思路之后就換題了 。過了。

          后來我?guī)蛣e人mock,真的很急,挑的easy和medium,要么給的不是最優(yōu)解,要么卡在代碼實現(xiàn)細節(jié)里。

          個人認為:

          1. 刷題面試,沒有傻人只有懶人,運氣不好(遇到老?。┲皇菚簳r的。
          2. 刷題多的數(shù)量多沒用,記不住,遍數(shù)多才是王道
          3.善于總結,背是不可能背的,理解吸收才是正途。
          4.刷了leetcode真的能提升代碼能力,我之前有想法到實現(xiàn)出來的速度很慢,但是刷過題之后明顯能覺得自己比以前棒棒啦!
          多刷刷有益無害的 ?♀? ?♀???♀?

          作者:糖長老
          https://www.zhihu.com/question/31092580/answer/441049272
          對于大部分人,甚至大部分cs科班出身的,第一次刷leetcode都會感到困難。這很正常的。我感覺我們中國學生經(jīng)常糾結于要不要自己獨立把題解出來,最后把自己搞得很抑郁。

          刷leetcode最好的方法就是給自己定個時間,超過了就果斷看答案,理接答案,按照答案的思路自己編一遍。剛開始刷leetcode重點不在于獨立解題,而在于迅速把所有的題刷三到四遍,后面遇到新題就自然會有思路,可以迎刃而解了。

          所謂書讀百遍,其義自見,說的是很有道理的。其實這也是學習進入一個新的領域的最有效方法。


          作者:黃晟
          https://www.zhihu.com/question/31092580/answer/618541259
          在不想接著化學讀博心灰意冷的時候刷了一下,現(xiàn)在由于轉(zhuǎn)碩了又忙不過來了。
          當時刷Leetcode來源于組內(nèi)師兄的推薦,當時基礎只有一點python,其它幾乎為零。
          談談感受,雖然自己不怎么打游戲,然而這很像打游戲,每當一道題accepted的時候特別有成就感。

          一開始必然拼寫錯誤,數(shù)據(jù)測試不通過啥的。慢慢校正,無疑是對python語言的一個鞏固,也被坑了無數(shù)次邊界檢查。

          后來,驚訝于python如此作弊的函數(shù)與方法,迭代器啊,列表方法啊,字典啊,通過看《Python基礎教程》學到了很多。

          再后來,看了不少大佬們的解答,知道自己比較欠缺的是數(shù)據(jù)結構還有算法。借了一本很簡單的書,簡單體會了比如分治還有動態(tài)規(guī)劃,然后盯著DP標簽的題做,突然有一天似乎明白了這種思想的含義,真是體會到了什么叫醍醐灌頂。數(shù)據(jù)結構中的鏈表和二叉數(shù)也是,在明白了python如何模擬數(shù)據(jù)結構(這是我在測試界面看到了網(wǎng)站幫我們寫好的代碼,才整明白的),又學了點數(shù)據(jù)結構后,刷起專題來還是很爽的。

          目前就到這個階段,還沒有說看到題能感受到用啥方法的地步,效率也是個渣,每周競賽那時也做,只能做前兩道的渣渣水平。另外用python不少時候能作弊,再用一門語言二刷很有必要啊。

          目的目前也只是掌握點技能,可以是本業(yè),也可以是輔助工具,就算是愛好也行。除編程訓練在,計算機架構,操作系統(tǒng),計算機網(wǎng)絡,數(shù)據(jù)庫,軟件工程等等等等也準備好好學。

          吃力,相當正常,不過個人有幾個渣方法:

          每道題做出來了會在小本本上記一筆,像是軍功簿,每周看一看,有激勵作用。
          數(shù)學基礎還是很重要的,看一本離散數(shù)學的書,也要看數(shù)據(jù)結構還有算法。

          有一門叫熟練的語言是很重要的,如果語言,數(shù)據(jù)結構,算法都不熟練,刷Leetcode會有不小的難度。個人推薦python開始,好用一點,不被某些語言上的東西困住。

          實在想不出的題看答案也可以,不過多看幾個答案,多琢磨,哦!這個想法真的很妙??!以后也能用上!如果程序通過但效率不行,也可以看其他人的算法,或許是習慣問題,或許是更好的算法。

          練習編程,非一時一日之功,以后上班了,每天刷兩三道,感覺會很爽!

          作者:要沒電了
          https://www.zhihu.com/question/31092580/answer/562179059
          非常正常,一開始都不會,像個傻子一樣,做的第一題是K個有序鏈表的合并,自己想了好久,覺得思路可完美了,寫出來發(fā)現(xiàn)怎么都過不了,和舍友討論一晚上,還是沒搞定,兩個大傻子呀??!

          有些算法思路你不熟悉的話,根本想不出了,想出來也寫不出來,寫出來也過不了,過得了也不一定是最優(yōu)的,真的慘。

          不過后期看到新題目真的會有一些思路的,實現(xiàn)能力也變強了,最差也能搞個暴搜出來。

          對于研發(fā)和算法的同學來說,刷題的重要性不言而喻,不刷提你好意思面試么,我自己只是大學學過C語言課,早忘了。三月開始刷題真的是0基礎(不過我的編程思路邏輯還是可以的),分享一下刷題的步驟:

          打地基階段:

          任務:數(shù)據(jù)結構,鏈表,堆棧,隊列,樹,圖,基本概念要清楚,基本操作要熟悉。
          目標:這一階段不必糾結于一些細節(jié),大致了解即可,先學會站,有些難的想不出先放著。
          資料:北航數(shù)據(jù)結構教程 唐發(fā)根,小甲魚 數(shù)據(jù)結構視頻。

          入門階段:

          任務:接觸一些基本的算法,排序,查找,遍歷,深搜,廣搜,遞歸等,多寫一些簡單題,增強實現(xiàn)能力。

          目標:算法思想細節(jié)要搞清楚,實現(xiàn)的一些細節(jié)也要懂,最好對著代碼一行一行走幾遍。你也許會對很多實現(xiàn)細節(jié)不清楚,沒關系,多寫,多畫。

          資料:劍指offer,大話數(shù)據(jù)結構(這個選擇著看吧 說的太啰嗦了),leetcode easy的題。

          跑步前進階段:

          任務:深入理解算法思想,增強實現(xiàn)能力,提高解決問題的能力,修煉內(nèi)功。
          目標:各種算法如貪心、深搜寬搜、動態(tài)規(guī)劃的思想要深入理解,提高動手能力。
          資料:ledtcode各個算法標簽下easy和部分medium的題目

          抱佛腳階段:

          任務:為了面試。抱佛腳呀
          目標:面試前幾天,記住更多的算法題目,讀題目,自己想思路,去網(wǎng)上找最優(yōu)思路,不必實現(xiàn)。
          資料:leetcode 牛客各種面經(jīng)。(我為了面試 最后在一周之內(nèi)把所有l(wèi)eetcode所有動態(tài)規(guī)劃的題目思路背下來了)

          刷題的原則就是,廣度要夠,不要死盯著一個不放。

          排序(快排 歸并 堆),查找,牛頓迭代法,TOPK問題,蓄水池抽樣問題,位運算這些都要有所涉獵。

          來源:深度學習與計算機視覺

          本文版權歸原作者所有,如有問題請聯(lián)系我刪除。



          感謝閱讀



          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美美女操逼视频 | 操逼视频素材大全网站直接看 | 国产美女久久久久久 | 国产亲子乱淫一级a片 | 黄色一级片电影 |