回覆列表
  • 1 # nlp演算法工程師追夢者

    王道資料結構這本書挺好用的。就算你不考研,把這本書多看幾遍肯定有許多提升,至少對我提升很大。

    我是上完學校開的資料結構的課程後用這本書自學的,大概花了幾個月看了兩遍書,書後習題認真過了一遍。感覺自己上升了一個層次,從上完課懵懵懂懂到對這門課有了一些清晰的認識,把自己的短板提高了一些,學其他的東西不會被卡住了。

    其次就是學習的過程中多做題多思考,動手畫圖和上機把演算法實現對理解也大有幫助。有一本題集叫資料結構1800,我只做了一點點,題目挺豐富的,你可以看看。

    然後,B站有許多相關學習影片,還有中國大學mooc網站也有學習影片,可以自己找找中意的,像華科出的資料結構好像就挺好。

    最後,我每當學不下去的時候,我就從下圖的角度看書,告訴自己當我把書翻厚,把整個顏色翻成黑色的時候我肯定就功力大成了,就很有成就感。

  • 2 # 堂吉訶德一世

    邊學邊練,適度刷題

    “邊學邊練”,把學習時涉及的資料結構和演算法,全部用程式碼實現一遍,效果倍棒。但是,要“適度刷題”,一定不要浪費太多時間在刷題上,我們的目的還是掌握,然後應用。除非是Google、Facebook這種對演算法要求很高的公司,國內企業還是重在掌握應用。

    2. 多問、多思考、多互動

    打怪升級法

    學習中最大的問題,就是要堅持下來。枯燥的學習過程中,給自己設立切實可行的目標,讓自己看到進度條。比如寫學習筆記或心得,同時儘可能尋求正反饋。

    3. 沉澱知識

    學習需要沉澱,不要妄想一下子掌握所有。學習的過程是反覆迭代、不斷沉澱的過程。

  • 3 # 歌頌

    把所有經典演算法寫一遍,一定要自己動手

    理解演算法的應用場景,知其所以然。比如統計整數二進位制中1的個數這個演算法,在文字內容相似性中有應用;不然刷再多題目也只具備短期價值加入演算法學習社群,不得不說一個人學習演算法,堅持是最難的事情,如果有幾個( 3~5個即可)目標興趣一致的同學一起,能起到一定正面的作用看經典書籍,這方面書很多,不一一列舉了詳細步驟:

    一、在刷題之前,要先具備一定的基礎,這些基礎包括:1、常見資料結構:連結串列、樹(如二叉樹)。2、常見演算法思想:貪婪法、分治法、窮舉法、動態規劃,回溯法。以上列出來的算是最基本的吧。就是在你刷題之前,要把這些基礎知識過一遍再去刷題。如果你連這些最基本的都不知道的話,那麼你再刷題的過程中,會很難受的,思路也會相對比較少。

    二、進行大量相關程式設計練習,用程式語言去實現某一資料結構上的演算法

    理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但,具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的程式語言實現。在我看來,這一過程已經不屬於“資料結構與演算法”的內容了。而是你綜合素質的體現,如何真正理解問題和用程式設計技巧實現,很考驗自己。這一過程,很難靠記憶。而在不斷敲程式碼的過程中去體會一些直覺上的東西。如何用遞迴解決問題,如何使用迴圈,如何使用"哨兵”等等等等。當然,敲完後需要去思考總結,看看能不能總結出一些”小套路“並記住。

    三、一題多解

    演算法能力的提升和做題的數量是有一定的關係,但並不是線性關係。也就是說,在做題的時候,要力求一題多解,如果自己實在想不出來其他辦法了,可以去看看別人是怎麼做的,千萬不要覺得模仿別人的做法是件丟人的事。

    看到一道題,你可能第一想法就是用很粗糙的方式做,因為很多題採用暴力法都會很容易做,就是時間複雜度很高。你要學會慢慢思考,看看有沒其他方法來降低時間複雜度或空間複雜度。最後,去看一下別人的做法,當然,並不是每道題都會這樣執行。

    衡量一道演算法題的好壞無非就是時間複雜度和空間複雜度,所以我們要力求完美,就要把這兩個降到最低,令他們相輔相成。

    最後我想告訴你的是:演算法在計算機這個行業中的重要性,可以說演算法無處不在。

    最常見的搜尋引擎、智慧機器人、推薦購物、掃雷遊戲、人臉識別等。

    只有學好演算法才能創造出更有意義的東西,而不是簡單的把資料取出來放到一個介面的就行了。如果不能在演算法方面有自己的建樹,軟體程式設計做到頭也就是一個碼農而已。

  • 中秋節和大豐收的關聯?
  • 家庭主婦們的心裡感受是什麼?