從廣義上講,數據結構就是指一組數據的存儲結構。算法就是操做數據的一組方法。面試
從狹義上講,是指某些著名的數據結構和算法,好比隊列、堆、棧、二分查找、動態規劃等。算法
數據結構和算法是相輔相成的。數據結構是爲算法服務的,算法要做用在特定的數據結構之上。所以,咱們沒法孤立數據結構來說算法,也沒法孤立算法來說數據結構。數組
首先,要掌握數據結構與算法最重要的概念——複雜度分析。微信
10個數據結構:數組、鏈表、棧、隊列、散列表、二叉樹、堆、跳錶、圖、Trie樹數據結構
10個算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動態規劃、字符串匹配算法框架
每週花幾個個小時的時間,把上述20個經常使用的數據結構和算法,所有本身寫出來,用代碼實現一遍,同時能夠去leetcode或lintcode刷刷題。數據結構和算法
寫好一段代碼之後,要問一下本身:這樣寫合適嗎?有沒有更好的方法?若是用其餘方法寫,效果如何?性能
多找幾我的一塊兒學習,之前我都是本身學習,如今愈來愈意識到互動的重要性,此次加入了一個「一塊兒學數據結構和算法」的微信羣,你們互相監督學習,有了良好的學習氛圍,對學習幫助也更大。學習
每節課後都寫下一篇筆記或學習心得,輸出文章自己也是一個學習的過程,經過寫文章,不只提高了寫做能力,也能倒逼本身學習更多知識。code
遇到學不懂的知識點,不要急躁,學習知識的過程就是反覆迭代、不斷沉澱的過程。