-
1 # ZerOSu
-
2 # 28hua
很正常,我也刷過,但是沒有堅持一直刷,一開始刷題的時候不適應,基本每次都要看答案,等刷過幾道的時候開始有感覺。leetcode的題目覆蓋範圍很廣範的,有的也很有技巧性,等刷多了,知識儲備上去,適當總結,有的題目還是可以自己寫出來的,至於有些題目就得看緣分了,我一般直接看答案,這樣快
-
3 # 歌頌
很正常。對於大多數正常人,沒別的技巧,一遍一遍刷到肌肉記憶。
Easy 的題目是不用思考就可以說出來答案的,但實際寫的話還是要認真檢查各種 corner case 有沒有處理好,否則一不小心就有 bug,無法一次提交透過。
Medium 的題目有幾種不同的情況,有些是問題比較難解決,有些是程式碼寫起來超級複雜。對於前者,會需要花一定的時間想想怎麼解,有可能能把題目轉化為其它已經已經做過的題目。對於後者,需要花時間思考怎樣寫的程式碼能夠覆蓋所有 corner cases 但又 maintainable,而且寫完不仔細檢查很容易在某些地方留下小 bug,就變成了要透過多次提交來排 bug。
Hard 的題目就隨緣吧,反正大概有一半是做不出來的。
總之這個事情你可以理解為跟訓練跑馬拉松差不多。今時今日已經有很科學的馬拉松訓練方法,能讓絕大多數人在一個月到幾個月的時間內從零開始訓練到能夠跑完馬拉松(合理時間內跑完)。這個過程大多數人只有有意志力都能堅持下來,但不代表它不痛苦。
這些在我看來就是一個熟練度的問題,多刷,認真刷,掌握技巧刷。久了自然就不會再覺得吃力。我刷到現在再來看這些簡單題會覺得大部分都很容易,但仍然保持著長期刷題。因為作為一個普通人
你只有非常努力,才能看起來毫不費力。
-
4 # 矽谷生活分享
非常正常!因為計算機演算法的邏輯思維不同於人類日常思維。最大不同就是人類平時都是總結規律經驗的方法,而且計算機演算法都是系統的推理,就跟做數學題一樣。相信從小學學到高三做同樣一套題庫的話也是熟能生巧,苦練以後在會覺得輕鬆。
所以,多練是必須的,看完答案就趕快自己試一下。最好集中做同類型的題,以方便觸類旁通。總共就幾種題型,模板都差不多,上網查查按型別總結的歸類。
加油吧!我從一晚上不一定做一道題,到現在1小時一題也用了不少功夫。
-
5 # trivial
c++ primer plus講的是語言。
leetcode做的是演算法,你應該找本演算法書看看。
-
6 # 剪影小妹的日常剪輯
其實我覺得刷leetcode是吃力是很正常的,因為之前你沒有做過相應的題呀,你也不知道相應的技巧呀,所以很多東西你得從頭到尾的去學習,讓你才能對你們的演算法,包括一些最佳化思路,有很深的理解。
我自己做letcode題目,已經有很多個年頭了,從最開始的什麼都不懂,到最後面能夠慢慢的摸清思路,去做一些題,我覺得也進步了很多,就像你學習一門新的技術一樣,你一開始覺得很難,當你慢慢的做一些題,慢慢的你就會熟悉到裡面那些方法論一些的東西,到那個時候你回頭一看這些東西,你就會發現她特別簡單,所以我覺得你也不要太灰心,努力的去做一些題,多想一想肯定有很多的進步的
-
7 # 玩嗨大資料
c++ primer plus 過了一遍,不代表就能輕鬆應付leetcode的題目哦。
刷leetcode除了需要對使用有的程式語言很瞭解,還需要熟練掌握各類常用演算法。
leetcode題量很大,建議分知識點刷,可以先刷“陣列”,“字串”這種題量比較大的
刷完一個知識點,要及時歸納總結。
記住,刷題不是為了追求數量,而是要透過刷題,熟練地掌握每個知識點。
另外,建議先看看《劍指offer》這本書,它對很多題型進行總結,刷過一遍再來刷leetcode相信會輕鬆不少。
-
8 # 極客見聞
目前刷了151/824道題,剛開始用python刷,後來面試調整,改用C++
工作使用Objective-C,但說實在的用它刷題,簡直了自找苦吃。C++還都是學校學的,還是個選修課,也沒怎麼好好上,有時候也想看看書系統學一下,但覺得太浪費時間,就直接硬抗,好在大部分都是集合類,字串處理什麼的。還勉強應付的了剛開始只刷簡單的題,結果不到50道,卡了,簡單的都這麼吃力,自信心完全沒了,扔了半年後來學會了各個擊破,連結串列,二分法,廣度優先搜尋還比較簡單。其他的比如遞迴,深度優先搜尋,子陣列問題,雜湊,動態規劃什麼的,幾乎都要看答案,新題要是能自己想出來,別提有多高興了, 實際情況都是看答案也看不懂,copy到IDE裡面一點點除錯,和自己寫的對比。有時就差一個字元,結果千差萬別。記得使用Anki,發現好多高人都用它記錄,一天感覺新題可以過3道,老題能過8道左右。不知不覺,就成長了,雖然目前還是個渣渣,但已經能看到進步了。在論壇上看到有大神一天能刷60道題,希望我也可以吧我在Github上有個Repo,也收集了一些不錯的資源,主要用來記錄每天刷了多少,給自己點遊戲的任務感覺吧,畢竟刷題很難,特別容易放棄。還有好多題不止一個答案,而我卻一個也沒想出來。這時我會放過自己,寫個TODO: XXX以後再完成PS: 關於如何使用Anki ?
我並沒有將程式碼貼到卡片中,背程式碼是不現實的,需要記憶的只是其中的題型+解題思路,每刷一道題,就會把題號+題目的型別放入到卡片中,遇到的坑什麼的也會記錄起來。
複習的時候,再手寫一遍。遇到新問題就追加到反面,例如:
正面:
215.kth-largest-element-in-an-array
反面:
quick-selection
-
9 # CodeTalk
看c++的書對刷leetcode幫助不大,建議看幾本演算法書,首推《演算法導論》。
刷題的話可以先從簡單難度的開始,熟能生巧,刷的多了自然就覺得簡單了。
祝刷題愉快!
-
10 # 五分鐘學演算法
https://github.com/MisterBooo/LeetCodeAnimation
刷 LeetCode 的大局觀
目前主流的刷題流派有兩種,一種【龜系】,一種【兔系】。
“龜系”刷法的精髓就是每個題目都做乾淨。不滿足於一種解法,各種解法都寫一寫。這種流派適合不太急於準備演算法面試的小夥伴,追求演算法的乾淨優雅。
“兔系”刷法的精髓是暴力,按照標籤來刷,使用固定套路來刷。比如小吳之前分析的那道拍案叫絕的演算法題,如果告訴你是標籤是異或,你馬上能 AC 。這都是套路。
每個標籤內部可以按照 Easy 、Medium、Hard 的順序做,演算法練習是一個系統工程,不要一開始就追求難題,先熟悉熟悉套路,循序漸進的去做,後面所謂的難題也就不在話下。
建議小夥伴第一遍刷題可以使用 【兔系】 法。
看懂題目
萬事開頭難,看懂題目是做好一道演算法題最開始也是最重要的一步。
我將 LeetCode 上的題大致分為三種類型:
•考察資料結構,比如連結串列、棧、佇列、雜湊表、圖、Trie、二叉樹等
•考察基礎演算法,比如深度優先、廣度優先、二分查詢、遞迴等
•考察基本演算法思想:遞迴、分治、回溯搜尋、貪心、動態規劃等
一些演算法題目會在標題或題目描述中給出明確的題目型別資訊,比如二叉樹的重建、連結串列的反轉。
而有一些題目中則在條件中給予暗示 :
•設計一個 O(nlogn) 的演算法(分治:在一顆搜尋樹中完成任務,對於資料排序)
•給定一個有序陣列(二分法)
•無需考慮額外的空間(用空間換時間上的最佳化)
•資料規模大概是 10000(O(n^2)就可以)
•問題可以被遞迴解決(動態規劃)
無論怎樣,當你拿到一道演算法題的時候,希望你能先去弄明白這道題目要考察的是什麼,是簡單的資料結構還是複雜的演算法思想。
先去理清題目背後解法要用的技術,這樣,這道演算法題目才有做下去的可能。
不要忽視暴力解法
一般來說,BAT 等大廠的演算法面試題基本上都是 Medium 級別及以下,並希望面試者能在 20 分鐘以內給出一個「相對正確」的回答。
為什麼說是 相對正確 ?
每一道演算法題得解法都有很多種,並不是說你沒有給出完美解或者最優解你就是錯的。
“正確” 本身是一個相對概念。
在演算法面試或者平時的演算法練習時,如果沒有頭緒,可以嘗試使用暴力解法。
(不要忽視暴力解法。暴力解法通常是思考的起點。)
當你使用了暴力解法之後,可以與面試官進行溝通最佳化,把這個過程看作是和麵試官一起探討一個問題的解決方案的過程,這也可以讓面試官瞭解你的思考問題的方式。這也是一個“正確”的回答方式。
先實現功能再去最佳化。
Done is better than perfect 。
實際編寫
到這一步就是演算法的落地了:將上面的思考結果思路轉換為程式碼。
在編寫的過程中需要注意題目中的邊界條件,比如陣列是否為空,指標是否為 NULL;同時也要注意程式碼的規範性:變數名,模組化,複用性。
做好總結
一定要做好總結,特別是當沒有解出題來,沒有思路的時候,一定要透過結束階段的總結來反思犯了什麼錯誤。解出來了也一定要總結題目的特點,題目中哪些要素是解出該題的關鍵。不做總結的話,花掉的時間所得到的收穫通常只有 50% 左右。
在題目完成後,要特別注意總結此題最後是歸納到哪種型別中,它在這種型別中的獨特之處是什麼。經過總結,這樣題目才會變成你在此問題域中的積累。
做好總結,讓每道題都有最大的收穫。一個月之後自己的狀態應該會有很大變化。[1]
最後,承認刷 LeetCode 很吃力很正常
你我都是普通的程式設計師,不像那些玩 ACM,拳打 LeetCode,腳踩劍指 offer,我們得接受現實:刷題,就是很痛苦很打擊的過程。
但,一遍一遍的刷,多刷一題就多掌握一題,你總會比別人更強一點。
大家一起加油:)
-
11 # 極客宇文氏
leetcode中文叫力扣,是演算法愛好者和學習者的必備社群。本人也是程式設計師,演算法功底也不行 前陣子接觸到這個演算法社群,覺得很有意思,值得大家上去刷題。下面是找到力扣的官網:
力扣上的演算法題有初級有高階,還經常設定非常多的演算法比賽,還有各種排名,剛開始玩這個社群的人建議不要好高騖遠,先把初級演算法題刷到熟練再層層遞增,到了可以把刷題做到遊刃有餘的時候,會有機會拿到意想不到的成就甚至網際網路巨頭的入職機會。
下圖是在力扣裡程式設計的程式碼:
-
12 # 站烽
刷leetcode不吃力的要麼是程式設計還沒入門,完全靠背誦程式碼的記憶怪獸,要麼是刷OJ已經刷麻木了的變態。。。這兩種人招進團隊估計都不會好好做專案的~
-
13 # JOJO0614
目前刷了300道了,m級 還是有些吃力,h級 技巧性太強 你之前沒有做過,普通人幾乎不可能做出來只能靠題海
回覆列表
從答主的情況看是剛剛看完了語法書,去刷leetcode就像剛學會識字就要創作文學作品。感覺有難度也是正常的,要多學習積累經驗,很快就可以渡過這段過渡期。