<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>

          面試指北:算法與數(shù)據(jù)結(jié)構(gòu)(二)如何學(xué)習(xí)

          共 1534字,需瀏覽 4分鐘

           ·

          2021-04-08 16:00

          在上文 面試指北:算法與數(shù)據(jù)結(jié)構(gòu)(一)開篇 中講了為什么學(xué)習(xí)算法與數(shù)據(jù)結(jié)構(gòu)和它包括哪些內(nèi)容。

          概括來說,掌握算法與數(shù)據(jù)結(jié)構(gòu)之后,我們會更容易跟上計(jì)算機(jī)潮流、更快了解其他框架底層原理、更可能進(jìn)入理想的公司。

          它包括:

          ?時(shí)間復(fù)雜度分析;?空間復(fù)雜度分析;?十個核心算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分支算法、回溯算法、動態(tài)規(guī)劃、字符串匹配算法;?十個核心數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表、棧、隊(duì)列、散列表、二叉樹、堆、跳表、圖、Trie 數(shù)。

          算法簡單來說就是處理數(shù)據(jù)的方法,數(shù)據(jù)結(jié)構(gòu)為表示、存儲數(shù)據(jù)的結(jié)構(gòu)。算法和數(shù)據(jù)結(jié)構(gòu)相輔相成。

          其中復(fù)雜度分析是重中之重,任何代碼在理論上分析其性能都離不開復(fù)雜度分析。算法的主要目標(biāo)是在如何更好的節(jié)省 CPU、內(nèi)存資源的情況下,處理數(shù)據(jù)解決問題。而我們又不可能每次通過在機(jī)器上跑一下的方式來衡量一個算法。這就需要用到復(fù)雜度分析。而且在學(xué)習(xí)排序、查找等算法時(shí),也必然會常常用到復(fù)雜度分析。

          對于一個數(shù)據(jù)結(jié)構(gòu)或者算法,我們也要去了解其發(fā)展歷史、自身有什么特點(diǎn)、和另外一個相比有什么異同、適合的問題場景、有什么實(shí)際的應(yīng)用等等。這樣才能從多個維度去了解一個知識點(diǎn),更好的掌握記憶。

          學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法只需要有高中數(shù)學(xué)和基礎(chǔ)編程知識即可。

          1. 實(shí)踐:一定要動手寫

          碰到一個排序算法或者查找算法,一定要自己盡量在不看示例代碼的情況下先寫一遍。然后和示例代碼對比,思考自己沒有考慮到的細(xì)節(jié)和自己代碼上能夠優(yōu)化的點(diǎn)。然后在自己多寫幾遍,同時(shí)結(jié)合 LeetCode 上的題目,做兩三道相關(guān)題目。

          近年來,無論是一萬小時(shí)定律,還是刻意練習(xí)。都在強(qiáng)調(diào)練習(xí)、實(shí)踐的重要性。通過練習(xí),一方面是肌肉記憶加深印象;另一方面,只有在練習(xí)過程中,你才能觸碰到知識點(diǎn)的細(xì)節(jié),讓你對其有所思考,進(jìn)而加強(qiáng)相關(guān)的神經(jīng)細(xì)胞。

          2. 總結(jié)、分享

          在學(xué)完知識之余,也要花工夫去總結(jié)和分享。在這個過程中,你會發(fā)現(xiàn)自己薄弱的地方。因?yàn)榉窒頃r(shí)你需要去考慮對方是否能夠理解你講的內(nèi)容,曝露出自己的不了解的知識之后,你就會去補(bǔ)足這個缺少的知識,這樣不斷的慢慢的完善自己的知識體系。

          分享出去之后,也能夠和讀者碰撞出一些思維的火花。已有的想法通過碰撞,產(chǎn)生新的想法,這是一件令人激動的事情。

          費(fèi)曼學(xué)習(xí)法中所強(qiáng)調(diào)的就是學(xué)習(xí)之后一定要教給別人,通過自己做老師這個過程,不斷的讓自己對這個知識點(diǎn)產(chǎn)生更加深入的理解、更加全面的理解,最終達(dá)到深入掌握知識的目的。

          3. 慢慢來

          學(xué)習(xí)不像打游戲,會不斷獲得反饋,這恐怕是打游戲停不下來的一個重大因素。任何知識的學(xué)習(xí)都需要一個沉淀的過程,你不可能一口吃成一個胖子。

          碰到問題時(shí)一定不要?dú)怵H和懷疑自己。因?yàn)榕龅絾栴}這時(shí)每個人都會遇到,你并不孤獨(dú)。有很多事情我們當(dāng)時(shí)不能理解,可以先把它放下,等一段時(shí)間的消化之后再來看看可能就會恍然大悟。這個時(shí)候你需要換個角度來看問題,我們一生會碰到很多問題,很多需要死磕才能解決的問題。這個時(shí)候就需要跨過去這個坎,掌握這個知識、工具,那就可以在以后的人生里使用它,這樣看來,投入的那些精力是不是相當(dāng)劃算。

          4. 使用工具

          最后,為了幫助大家更好的學(xué)習(xí)數(shù)據(jù)結(jié)果與算法,我開發(fā)了一個可視化小程序。在這個小程序上你可以可視化的看到比如快速排序算法的執(zhí)行過程,把枯燥的代碼形象的展示或許會更好的幫助你學(xué)習(xí)。

          微信搜索 VisualLearning 或者點(diǎn)擊下方小程序即可體驗(yàn)。


          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  爱搞 | 操草网| 北条麻妃被躁57分钟视频在线 | 国产午夜精品一区二区芒果视频 | 亚洲中文电影 |