題單列表 - 洛谷?

www.luogu.com.cn

洛谷題單刷下去就行,計算機系的話如果只是為了普通找工作,【官方精選題單】刷下去,leetcode hard 題都應該算不難的題,可以降維打擊(確信)。

如果要專門衝刺 ACM,那麼還得利用洛谷其他的題單進行訓練,同時在 codeforces.com 上多進行英語比賽的訓練,或者國內知名的 acm.hdu.edu.cn 之類的專門為了 acm 的 OJ。

還有一點,因為你不能說每個題都看題解寫一遍都是刷題。看題解不是不行,甚至是一種很好的學習方式,但是如果每個題都沒有自己的思考的話,那是自然不夠的。一般對於初學者的題目的話,30 分鐘到一小時是個比較好的時間,如果一個小時都沒有思路的話看看題解是能夠提高學習效率的。


就硬刷題

leetcode(面向大眾)

codeforce(面向大佬)

刷到不會的看題解,如果題解裡面有出現你沒學過的數構or演算法,就去網上查資料。


Acwing 學習,力扣、codeforce刷題,還有一堆書可以買來看


謝邀,去刷題網站刷題。leetcode.com

不知道你是為什麼練習演算法,競賽的話可以無視我,我不夠格指點你。實際上你在公司當普通碼農搬磚(注意:純粹搬磚,勿槓)的話是用不到什麼演算法的,只有一些特殊場景有用,舉個例子,有些公司的業務需要維護一個無/有向圖數據結構,那你肯定至少圖遍歷,最短路徑的演算法要了解。

如果是為了公司面試的話分國內和國外;

國外的一次面試普遍會甩你一兩道leetcode medium甚至hard難度的演算法題。主要重點學習以下知識點(在leetcode的標籤裏找這些知識點的標籤直接針對類別開始刷):

  • Dynamic programming/Recursion/Backtracking/Memoization 動態規劃/遞歸相關,面試演算法題王道套路,大多數公司拋給你的演算法題如果能用漂亮的DP做出來的話基本穩了
  • Tree 樹數據結構,主要關注BST(二叉搜索樹),AVL(自平衡二叉樹,二叉樹需要足夠「平衡」才能保證其每次檢索的複雜度都能到O(lgn)) 面試考得賊多,其他變種紅黑樹等基本沒見過
  • Graph/DFS/BFS/Shortest path 圖論相關
  • Stack/Queue/Hash 有些演算法題要思考如何用這些數據結構來優化複雜度

國內面試就是另外的情況了。演算法題反而沒那麼重要,而且普遍比美國簡單,甚至很多leetcode easy。某些大廠的筆試除外,但是筆試不重要。國內很喜歡針對崗位考技術相關知識,而國外是默認這些崗位相關的甚至可以進廠學,主要考演算法與system design。


好好做項目,別刷這玩意,沒用


個人覺得單獨學習演算法十分困難和枯燥的,建議邊寫項目邊學所需的演算法和設計模式。容易把學到知識運用到項目中,增加對其理解以及對項目整體的把握。

當然這種方式的話,存在知識體系不夠完善,程序可能不夠完善後續需要重構。雖然可能會讓完美主義者有些失望,但這個過程卻很能鍛煉人。不一定要一步到位,可以一步一個腳印的提高。

快速入門的話,推薦幾本書:《啊哈!演算法》或者《大話數據結構》、《大話設計模式》

有了底子過後可以刷一刷leetcode,做完之後要看看其他大佬的解答並思考為何這麼寫。

刷了差不多了,你的實力應對一般工作是綽綽有餘了。


學完基礎,某一門語言和基礎的數據結構之後多刷OJ。堅持,不要被打擊後就懷疑人生。


練習演算法無他

1.反覆學習演算法思想,做到心領神會,反覆是有時間間隔的,就是你感覺記憶模糊的時候就可以重複去學習理解下了

2.leetcode練題,過遍數,最少每題3遍,配合上面一步來

3. 記錄每次學習,過遍數後的學習心得,或一些思考的技巧


找工作刷題多上英文版的leetcode 多看每題discuss discuss是精華


洛谷刷題單,codeforces競賽


到你們學校的演算法協會去蹭蹭經驗,你去問學長怎麼學習比你在網上問靠譜多了。我推薦個比較基礎的書《演算法筆記》,是目標pat的,講的技巧都很易懂


找份工作


直接和老師一起做項目吧,這最鍛煉人了。


面向工作:Leetcode

挑戰自己:參加ACM


推薦閱讀:
相關文章