玩轉(zhuǎn)算法面試從真題到思維全面提升算法思維_第1頁(yè)
玩轉(zhuǎn)算法面試從真題到思維全面提升算法思維_第2頁(yè)
玩轉(zhuǎn)算法面試從真題到思維全面提升算法思維_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、玩轉(zhuǎn)算法面試從真題到思維全面提升算法思維數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)數(shù)據(jù)的編程方式,因此可以有效地使用數(shù)據(jù)。幾乎每個(gè)企業(yè)應(yīng)用程序都以一種或另一種方式使用各種類型的數(shù)據(jù)結(jié)構(gòu)。本教程將使您對(duì)理解企業(yè)級(jí)應(yīng)用程序的復(fù)雜性以及算法和數(shù)據(jù)結(jié)構(gòu)的需求所需的數(shù)據(jù)結(jié)構(gòu)有很好的了解。數(shù)據(jù)結(jié)構(gòu)是一種組織數(shù)據(jù)以有效使用數(shù)據(jù)的系統(tǒng)方法。以下術(shù)語(yǔ)是數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)術(shù)語(yǔ)?!敖涌?每個(gè)數(shù)據(jù)結(jié)構(gòu)都有一個(gè)接口。接口表示數(shù)據(jù)結(jié)構(gòu)支持的一組操作。接口僅提供支持的操作的列表,它們可以接受的參數(shù)類型以及返回這些操作的類型。實(shí)現(xiàn)-實(shí)現(xiàn)提供數(shù)據(jù)結(jié)構(gòu)的內(nèi)部表示。實(shí)現(xiàn)還提供了在數(shù)據(jù)結(jié)構(gòu)操作中使用的算法的定義。0第1章算法面試到底是什么鬼?一提起算法面試,很多同

2、學(xué)就會(huì)心有余悸。可其實(shí),大多數(shù)企業(yè)的算法面試,并沒有那么可怕。并不是定要啃完整本算法導(dǎo)論,才能玩兒轉(zhuǎn)算法面試;也并不是只有ACM參賽選手,才能笑傲算法面試。恰恰相反,大多數(shù)算法面試關(guān)注的算法思維,其實(shí)很基礎(chǔ)。在這一章,和大家聊一聊,算法面試,到底是什么鬼?共5節(jié)(66分鐘)收起列表“1-1算法面試不僅僅是正確的回答問題(19:37)1-2算法面試只是面試的一部分(14:51)“1-3如何準(zhǔn)備算法面試(17:38):1-4如何回答算法面試問題(13:40)5作業(yè)節(jié)“第2章面試中的復(fù)雜度分析很多同學(xué)一提起復(fù)雜度分析就頭疼,馬上想起了算法導(dǎo)論中復(fù)雜的數(shù)學(xué)推導(dǎo)。但其實(shí)在一般的企業(yè)面試中,對(duì)復(fù)雜度的分析

3、要求并沒有那么高,但也是繞不過去的坎兒。在這一章,和大家介紹一下,面試中需要掌握的復(fù)雜度分析。共7節(jié)(108分鐘)收起列表1究竟什么是大O(BigO)(19:52)2-2對(duì)數(shù)據(jù)規(guī)模有一個(gè)概念(11:26)2-3簡(jiǎn)單的復(fù)雜度分析(19:20)2-4親自試驗(yàn)自己算法的時(shí)間復(fù)雜度(14:53)2-5遞歸算法的復(fù)雜度分析(14:46)-2-6均攤時(shí)間復(fù)雜度分析(AmortizedTimeAnalysis)(15:16)7避免復(fù)雜度的震蕩(11:25)。第3章數(shù)組中的問題其實(shí)最常見面試中的算法問題,有很多并不需要復(fù)雜的數(shù)據(jù)結(jié)構(gòu)支撐。就是用數(shù)組,就能考察出很多東西了。其實(shí),經(jīng)典的排序問題,二分搜索等等問題

4、,就是在數(shù)組這種最基礎(chǔ)的結(jié)構(gòu)中處理問題的。在這一章中,我們學(xué)習(xí)常見的數(shù)組中處理問題的方法。.共8節(jié)(129分鐘)收起列表=3-1從二分查找法看如何寫出正確的程序(15:27)二3-2改變變量定義,依然可以寫出正確的算法(12:06):3-3在LeetCode上解決第一個(gè)問題MoveZeros(13:27)=3-4即使簡(jiǎn)單的問題,也有很多優(yōu)化的思路(15:30):3-5三路快排partition思路的應(yīng)用SortColor(22:26):3-6對(duì)撞指針TwoSumII-InputArrayisSorted(19:44)7滑動(dòng)窗口MinimumSizeSubarraySum(14:09)8在滑動(dòng)窗

5、口中做記錄LongestSubstringWithoutRepeatingCharacters(15:20)第4章查找表相關(guān)問題查找,是使用計(jì)算機(jī)處理問題時(shí)的一個(gè)最基本的任務(wù),因此也是面試中非常常見的一類問題。很多算法問題的本質(zhì),就是要能夠高效查找。學(xué)會(huì)使用系統(tǒng)庫(kù)中的map和set,就已經(jīng)成功了一半。共8節(jié)(111分鐘)收起列表-4-1set的使用IntersectionofTwoArrays(11:12)-4-2map的使用IntersectionofTwoArraysII(13:05)-4-3set和map不同底層實(shí)現(xiàn)的區(qū)別(19:00)4使用查找表的經(jīng)典問題TwoSum(16:56)5靈

6、活選擇鍵值4SumII(13:25)4-5靈活選擇鍵值4SumII(13:25)-4-6靈活選擇鍵值NumberofBoomerangs(14:45)-4-7查找表和滑動(dòng)窗口ContainDuplicateII(11:20)4-8二分搜索樹底層實(shí)現(xiàn)的順序性ContainDuplicateIII(10:50)“第5章在鏈表中穿針引線鏈表是一種特殊的線性結(jié)構(gòu),由于不能像數(shù)組一樣進(jìn)行隨機(jī)的訪問,所以和鏈表相關(guān)的問題有他自身的特點(diǎn)。我將之稱為穿針引線。我們?cè)谶@一章,就來看一看,如何在鏈表中穿針引線。共6節(jié)(88分鐘)收起列表5-1鏈表,在節(jié)點(diǎn)間穿針引線ReverseLinkedList(15:44)5

7、-2測(cè)試你的鏈表程序(16:26)5-3設(shè)立鏈表的虛擬頭結(jié)點(diǎn)RemoveLinkedListElements(17:08)5-4復(fù)雜的穿針引線SwapNodesinPairs(13:30)5-5不僅僅是穿針引線DeleteNodeinaLinkedList(07:29)5-6鏈表與雙指針RemoveNthNodeFormEndofList(16:49)“第6章棧,隊(duì)列,優(yōu)先隊(duì)列棧和隊(duì)列雖然是簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),但是使用這些簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)所解決的算法問題不一定簡(jiǎn)單。在這一章里,我們將來探索,和棧與隊(duì)列相關(guān)的算法問題。共8節(jié)(111分鐘)收起列表:6-1棧的基礎(chǔ)應(yīng)用ValidParentheses(1

8、6:10):6-2棧和遞歸的緊密關(guān)系BinaryTreePreorder,InorderandPostorderTraversal(16:03):6-3運(yùn)用棧模擬遞歸(19:33):6-4隊(duì)列的典型應(yīng)用BinaryTreeLevelOrderTraversal(10:26):6-5BFS和圖的最短路徑PerfeetSquares(21:20)-6-6優(yōu)先隊(duì)列(11:09)-6-7優(yōu)先隊(duì)列相關(guān)的算法問題TopKFrequentElements(15:37)6-8作業(yè)節(jié)第7章二叉樹和遞歸遞歸,是使用計(jì)算機(jī)解決問題的一種重要的思考方式。而二叉樹由于其天然的遞歸結(jié)構(gòu),使得基于二叉樹的算法,均擁有著遞歸

9、性質(zhì)。使用二叉樹,是研究學(xué)習(xí)遞歸算法的最佳入門方式。在這一章里,我們就來看一看二叉樹中的遞歸算法。共7節(jié)(83分鐘)收起列表7-1二叉樹天然的遞歸結(jié)構(gòu)(15:58)*7-2個(gè)簡(jiǎn)單的二叉樹問題引發(fā)的血案InvertBinaryTree(09:08)7-3作業(yè)節(jié)7-4注意遞歸的終止條件PathSum(12:04)7-5定義遞歸問題BinaryTreePath(13:34):7-6稍復(fù)雜的遞歸邏輯PathSumIII(14:11)7二分搜索樹中的問題LowestCommonAneestorofaBinarySearchTree(17:46)“第8章遞歸和回溯法回溯法是解決很多算法問題的常見思想,甚至

10、可以說是傳統(tǒng)人工智能的基礎(chǔ)方法。其本質(zhì)依然是使用遞歸的方法在樹形空間中尋找解。在這一章,我們來具體看一下將遞歸這種技術(shù)使用在非二叉樹的結(jié)構(gòu)中,從而認(rèn)識(shí)回溯這一基礎(chǔ)算法思想。共8節(jié)(156分鐘)收起列表-8-1樹形問題LetterCombinationsofaPhoneNumber(18:09)2什么是回溯(18:16)-8-3排列問題Permutations(19:02)-8-4組合問題Combinations(14:27)8-5回溯法解決組合問題的優(yōu)化(17:29)-8-6二維平面上的回溯法WordSeareh(21:45)8-7floodfill算法,一類經(jīng)典問題NumberofIslan

11、ds-(21:27)8-8回溯法是經(jīng)典人工智能的基礎(chǔ)NQueens(25:17)第9章動(dòng)態(tài)規(guī)劃基礎(chǔ)很多同學(xué)聽到“動(dòng)態(tài)規(guī)劃”的名稱可能會(huì)望而生畏,覺得動(dòng)態(tài)規(guī)劃的問題都很復(fù)雜。但其實(shí),動(dòng)態(tài)規(guī)劃本質(zhì)依然是遞歸算法,只不過是滿足特定條件的遞歸算法。在這一章里,我們就來逐步解開動(dòng)態(tài)規(guī)劃的神秘面紗共10節(jié)(214分鐘)收起列表遞歸算法,只不過是滿足特定條件的遞歸算法。在這一章里,我們就來逐步解開動(dòng)態(tài)規(guī)劃的神秘面紗共10節(jié)(214分鐘)收起列表9-1什么是動(dòng)態(tài)規(guī)劃(20:27)9-2第一個(gè)動(dòng)態(tài)規(guī)劃問題ClimbingStairs(14:02)9-3發(fā)現(xiàn)重疊子問題IntegerBreak(25:10)u9-4

12、狀態(tài)的定義和狀態(tài)轉(zhuǎn)移HouseRobber(27:19)9-50-1背包問題(32:37)9-60-1背包問題的優(yōu)化和變種(20:18)9-7面試中的0-1背包問題PartitionEqualSubsetSum(27:34)8LIS問題LongestIncreasingSubsequenee(25:12)9-9LCS,最短路,求動(dòng)態(tài)規(guī)劃的具體解以及更多(21:00)9-10作業(yè)節(jié)“第10章貪心算法通常同學(xué)們可能會(huì)認(rèn)為貪心算法比較簡(jiǎn)單。確實(shí),通常貪心算法的實(shí)現(xiàn)非常容易,但是,一個(gè)問題是否能夠使用貪心算法,是一定要小心的。我們?cè)谶@一章來看一看,貪心算法可能會(huì)有哪些坑。共3節(jié)(46分鐘)收起列表=10-1貪心基礎(chǔ)AssignCookies(12:12)二10-2貪心算法與動(dòng)態(tài)規(guī)劃的關(guān)系Non-overlappin

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論