1. 程式人生 > >最新玩轉演算法面試_從真題到思維全面提升演算法思維_網際網路公司演算法面試真題

最新玩轉演算法面試_從真題到思維全面提升演算法思維_網際網路公司演算法面試真題

相信這是一門非常及時的課程,送給面試在即的你,學完這門課程,對於面試中遇到的大多數演算法問題,你都會迎刃而解,但課程絕不止於面試,同樣適合即將參加各類演算法競賽的同學,重要的是提升你的演算法思維,這將是貫穿你程式設計生涯的核心內功!

用主流開發語言跟隨演算法大牛來一場思維的碰撞,以C++為主講語言,併為你同步配套Java程式碼

囊括了演算法面試的各方面問題,不拘泥純理論知識講解,課程每章節配套大量練習題,強化訓練,巧過面試關!

適合人群
適合具備基本程式設計思想,瞭解C++基本語法,最好你已經學習過另一門實戰課程《演算法與資料結構》,或者對基礎資料結構已經有了解,在此基礎上,想提升演算法設計能力的同學,那這門課程非常適合你

官方課程連結:https://coding.imooc.com/class/82.html


 

第1章 演算法面試到底是什麼鬼?
一提起演算法面試,很多同學就會心有餘悸。可其實,大多數企業的演算法面試,並沒有那麼可怕。並不是一定要啃完整本《演算法導論》,才能玩兒轉演算法面試;也並不是只有ACM參賽選手,才能笑傲演算法面試。恰恰相反,大多數演算法面試關注的演算法思維,其實很基礎。在這一章,和大家聊一聊,演算法面試,到底是什麼鬼?...
1-1 演算法面試不僅僅是正確的回答問題
1-2 演算法面試只是面試的一部分
1-3 如何準備演算法面試
1-4 如何回答演算法面試問題

第2章 面試中的複雜度分析


很多同學一提起復雜度分析就頭疼,馬上想起了《演算法導論》中複雜的數學推導。但其實在一般的企業面試中,對複雜度的分析要求並沒有那麼高,但也是繞不過去的坎兒。在這一章,和大家介紹一下,面試中需要掌握的複雜度分析。...
2-1 究竟什麼是大O(Big O)
2-2 對資料規模有一個概念
2-3 簡單的複雜度分析
2-4 親自試驗自己演算法的時間複雜度
2-5 遞迴演算法的複雜度分析
2-6 均攤時間複雜度分析(Amortized Time Analysis)
2-7 避免複雜度的震盪

第3章 陣列中的問題其實最常見
面試中的演算法問題,有很多並不需要複雜的資料結構支撐。就是用陣列,就能考察出很多東西了。其實,經典的排序問題,二分搜尋等等問題,就是在陣列這種最基礎的結構中處理問題的。在這一章中,我們學習常見的陣列中處理問題的方法。...
3-1 從二分查詢法看如何寫出正確的程式
3-2 改變變數定義,依然可以寫出正確的演算法
3-3 在LeetCode上解決第一個問題 Move Zeros
3-4 即使簡單的問題,也有很多優化的思路
3-5 三路快排partition思路的應用 Sort Color
3-6 對撞指標 Two Sum II - Input Array is Sorted
3-7 滑動視窗 Minimum Size Subarray Sum
3-8 在滑動視窗中做記錄 Longest Substring Without Repeating Characters

第4章 查詢表相關問題
查詢,是使用計算機處理問題時的一個最基本的任務,因此也是面試中非常常見的一類問題。很多演算法問題的本質,就是要能夠高效查詢。學會使用系統庫中的map和set,就已經成功了一半。
4-1 set的使用 Intersection of Two Arrays
4-2 map的使用 Intersection of Two Arrays II
4-3 set和map不同底層實現的區別
4-4 使用查詢表的經典問題 Two Sum
4-5 靈活選擇鍵值 4Sum II
4-6 靈活選擇鍵值 Number of Boomerangs
4-7 查詢表和滑動視窗 Contain Duplicate II
4-8 二分搜尋樹底層實現的順序性 Contain Duplicate III

第5章 在連結串列中穿針引線
連結串列是一種特殊的線性結構,由於不能像陣列一樣進行隨機的訪問,所以和連結串列相關的問題有他自身的特點。我將之稱為穿針引線。我們在這一章,就來看一看,如何在連結串列中穿針引線。
5-1 連結串列,在節點間穿針引線 Reverse Linked List
5-2 測試你的連結串列程式
5-3 設立連結串列的虛擬頭結點 Remove Linked List Elements
5-4 複雜的穿針引線 Swap Nodes in Pairs
5-5 不僅僅是穿針引線 Delete Node in a Linked List
5-6 連結串列與雙指標 Remove Nth Node Form End of List

第6章 棧,佇列,優先佇列
棧和佇列雖然是簡單的資料結構,但是使用這些簡單的資料結構所解決的演算法問題不一定簡單。在這一章裡,我們將來探索,和棧與佇列相關的演算法問題。
6-1 棧的基礎應用 Valid Parentheses
6-2 棧和遞迴的緊密關係 Binary Tree Preorder, Inorder and Postorder Traversal
6-3 運用棧模擬遞迴
6-4 佇列的典型應用 Binary Tree Level Order Traversal
6-5 BFS和圖的最短路徑 Perfect Squares
6-6 優先佇列
6-7 優先佇列相關的演算法問題 Top K Frequent Elements

第7章 二叉樹和遞迴
遞迴,是使用計算機解決問題的一種重要的思考方式。而二叉樹由於其天然的遞迴結構,使得基於二叉樹的演算法,均擁有著遞迴性質。使用二叉樹,是研究學習遞迴演算法的最佳入門方式。在這一章裡,我們就來看一看二叉樹中的遞迴演算法。...
7-1 二叉樹天然的遞迴結構
7-2 一個簡單的二叉樹問題引發的血案 Invert Binary Tree
7-3 注意遞迴的終止條件 Path Sum
7-4 定義遞迴問題 Binary Tree Path
7-5 稍複雜的遞迴邏輯 Path Sum III
7-6 二分搜尋樹中的問題 Lowest Common Ancestor of a Binary Search Tree

第8章 遞迴和回溯法
回溯法是解決很多演算法問題的常見思想,甚至可以說是傳統人工智慧的基礎方法。其本質依然是使用遞迴的方法在樹形空間中尋找解。在這一章,我們來具體看一下將遞迴這種技術使用在非二叉樹的結構中,從而認識回溯這一基礎演算法思想。...
8-1 樹形問題 Letter Combinations of a Phone Number
8-2 什麼是回溯
8-3 排列問題 Permutations
8-4 組合問題 Combinations
8-5 回溯法解決組合問題的優化
8-6 二維平面上的回溯法 Word Search
8-7 floodfill演算法,一類經典問題 Number of Islands-
8-8 回溯法是經典人工智慧的基礎 N Queens

第9章 動態規劃基礎
很多同學聽到“動態規劃”的名稱可能會望而生畏,覺得動態規劃的問題都很複雜。但其實,動態規劃本質依然是遞迴演算法,只不過是滿足特定條件的遞迴演算法。在這一章裡,我們就來逐步解開動態規劃的神祕面紗
9-1 什麼是動態規劃
9-2 第一個動態規劃問題 Climbing Stairs
9-3 發現重疊子問題 Integer Break
9-4 狀態的定義和狀態轉移 House Robber
9-5 0-1揹包問題
9-6 0-1揹包問題的優化和變種
9-7 面試中的0-1揹包問題 Partition Equal Subset Sum
9-8 LIS問題 Longest Increasing Subsequence
9-9 LCS,最短路,求動態規劃的具體解以及更多

第10章 貪心演算法
通常同學們可能會認為貪心演算法比較簡單。確實,通常貪心演算法的實現非常容易,但是,一個問題是否能夠使用貪心演算法,是一定要小心的。我們在這一章來看一看,貪心演算法可能會有哪些坑。
10-1 貪心基礎 Assign Cookies
10-2 貪心演算法與動態規劃的關係 Non-overlapping Intervals
10-3 貪心選擇性質的證明

第11章 課程結語
看完整個課程,我不能保證所有的同學都能百分百地對每一個演算法面試問題應答自如,但認真學習的同學對大部分問題都應該已經有了一個合理的思維路徑。在最後一章,我們再來簡單地總結一下,並祝每一位同學都能找到自己喜歡的工作,大展巨集圖:)...
11-1 結語

 

 

下載地址:百度網盤