Code Monkey home page Code Monkey logo

liuyubobobo / play-with-algorithm-interview Goto Github PK

View Code? Open in Web Editor NEW
1.1K 56.0 459.0 108.72 MB

Codes of my MOOC Course <Play with Algorithm Interviews>. Updated contents and practices are also included. 我在慕课网上的课程《玩儿转算法面试》示例代码。课程的更多更新内容及辅助练习也将逐步添加进这个代码仓。

CMake 3.36% C++ 48.99% Java 47.64%
algorithms interview-questions interview-practice leetcode imooc mooc

play-with-algorithm-interview's Introduction

玩儿转算法面试 - 课程官方代码仓

大家好, 欢迎大家来到我在慕课网上的实战课程《玩儿转算法面试》的官方代码仓。这个代码仓将不仅仅包含课程的所有源代码,还将发布课程的更新相关内容,勘误信息以及计划的更多可以丰富课程的内容,如更多分享,多多练习,等等等等。课程源码暂时只提供C++语言的源代码。关于更多语言的支持,今后有时间,我会慢慢更新这个代码仓(不过预计会是蜗牛速了>_<)。大家可以下载、运行、测试、修改。如果你发现了任何bug,或者对课程中的任何内容有意见或建议,欢迎和我联系:)

个人网站liuyubobobo.com [废弃重整中...]

电子邮件[email protected]

微博: 刘宇波bobo http://weibo.com/liuyubobobo

知乎: 刘宇波 http://www.zhihu.com/people/liuyubobobo

知乎专栏:是不是很酷 https://zhuanlan.zhihu.com/liuyubobobo

个人公众号:是不是很酷:)

qrcode

课程相关其他代码仓

本代码仓包括

课程更新信息

  • v 2.0 添加课程Java源码

  • v 1.0 全套课程上线

课程源码目录

第一章:算法面试到底是什么鬼 [无代码] [无代码]
1-1 算法面试不仅仅是正确的回答问题 [无代码] [无代码]
1-2 算法面试只是面试的一部分 [无代码] [无代码]
1-3 如何准备算法面试 [无代码] [无代码]
1-4 如何会打算发面试问题 [无代码] [无代码]
第二章:面试中的复杂度分析 章节C++源码 章节Java源码
2-1 究竟什么是大O (Big O) [无代码] [无代码]
2-2 对数据规模有一个概念 C++源码 Java源码
2-3 简单的复杂度分析 C++源码 Java源码
2-4 亲自试验自己算法的复杂度 C++源码 Java源码
2-5 递归算法的时间复杂度 C++源码 Java源码
2-6 均摊时间复杂度分析(Amortized Time Analysis) C++源码 Java源码
2-7 避免复杂度的震荡 C++源码 Java源码
补充代码1: 动态空间的数组结构 玩转数据结构 第二章 第2-9小节
补充代码2: 动态空间的栈结构 玩转数据结构 第三章 第2小节
补充代码3: 动态空间的队列结构 玩转数据结构 第三章 第5-8小节
补充代码4: 动态空间的堆结构 玩转数据结构 第八章
第三章:数组中的问题其实最常见 章节C++源码 章节Java源码
3-1 从二分查找法看如何写出正确的程序 C++源码 Java源码
3-2 改变变量定义,依然可以写出正确的算法 C++源码 Java源码
3-3 在LeetCode上解决第一个问题 Move Zeros C++源码 Java源码
3-4 即使简单的问题,也有很多优化的思路 C++源码 Java源码
3-5 三路快排partition思路的应用 Sort Color C++源码 Java源码
3-6 对撞指针 Two Sum II - Input Array is Sorted C++源码 Java源码
3-7 滑动窗口 Minimum Size Subarray Sum C++源码 Java源码
3-8 在滑动窗口中做记录 Longest Substring Without Repeating Characters C++源码 Java源码
补充代码1: 各种排序算法的系统剖析 算法与数据结构 第二,三,四章
第四章:查找表相关问题 章节C++源码 章节Java源码
4-1 set的使用 Intersection of Two Arrays C++源码 Java源码
4-2 map的使用 Intersection of Two Arrays II C++源码 Java源码
4-3 set和map不同底层实现的区别 C++源码 Java源码
4-4 使用查找表的经典问题 Two Sum C++源码 Java源码
4-5 灵活选择键值 4Sum II C++源码 Java源码
4-6 灵活选择键值 Number of Boomerangs C++源码 Java源码
4-7 查找表和滑动窗口 Contain Duplicate II C++源码 Java源码
4-8 二分搜索树底层实现的顺序性 Contain Duplicate III C++源码 Java源码
补充代码1:基于链表和二分搜索树实现的set和map 玩转数据结构 第七章
补充代码2: 基于AVL树实现的set和map 玩转数据结构 第十二章
补充代码3: 基于红黑树实现的set和map 玩转数据结构 第十三章
补充代码2: 基于哈希表实现的set和map 玩转数据结构 [第十四章]
第五章:在链表中穿针引线 章节C++源码 章节Java源码
5-1 链表,在节点间穿针引线 Reverse Linked List C++源码 Java源码
5-2 测试你的链表程序 C++源码 Java源码
5-3 设立链表的虚拟头结点 Remove Linked List Elements C++源码 Java源码
5-4 复杂的穿针引线 Swap Nodes in Pairs C++源码 Java源码
5-5 不仅仅是穿针引线 Delete Node in a Linked List C++源码 Java源码
5-6 链表与双指针 Remove Nth Node From End of List C++源码 Java源码
补充代码1:链表的完整底层实现 玩转数据结构 第四章
补充代码2:通过链表深刻理解递归 玩转数据结构 第五章
补充代码3:Floyd's 环检测算法 [C++源码] [Java源码]
第六章:栈,队列,优先队列 章节C++源码 章节Java源码
6-1 栈的基础应用 Valid Parentheses C++源码 Java源码
6-2 栈和递归的紧密联系 Binary Tree Preoder, Inorder and Posorder Traversal C++源码 Java源码
6-3 运用栈模拟递归 C++源码 Java源码
6-4 队列的典型应用 Binary Tree Level Order Traversal C++源码 Java源码
6-5 BFS和图的最短路径 Perfect Squares C++源码 Java源码
6-6 优先队列 C++源码 Java源码
6-7 优先队列相关的算法问题 Top K Frequent Elements C++源码 Java源码
补充代码1:二叉树经典前序非递归遍历 C++源码 Java源码
补充代码2:二叉树经典中序非递归遍历 C++源码 Java源码
补充代码3:二叉树经典后序非递归遍历 C++源码 Java源码
补充代码4:二叉树的Morris非递归遍历 C++源码 Java源码
补充代码5:双向广度优先搜索 Word Ladder C++源码 Java源码
第七章:二叉树和递归 章节C++源码 章节Java源码
7-1 二叉树天然的递归结构 C++源码 Java源码
7-2 一个简单的二叉树问题引发的血案 Invert Binary Tree C++源码 Java源码
7-3 注意递归的终止条件 Path Sum C++源码 Java源码
7-4 定义递归问题 Binary Tree Path C++源码 Java源码
7-5 稍复杂的递归逻辑 Path Sum III C++源码 Java源码
7-6 二分搜索树中问题 Lowest Common Ancestor of a Binary Search Tree C++源码 Java源码
补充代码1:二分搜索树的完整底层实现 玩转数据结构 第六章
补充代码2:AVL树的完整底层实现 玩转数据结构 第十二章
补充代码3:红黑树的完整底层实现 玩转数据结构 第十三章
补充代码4:使用数组生成二叉树测试用例 [整理中] [敬请期待]
补充代码5:普通二叉树的LCA问题 [整理中] [敬请期待]
补充代码6:二分搜索树的LCA问题 [整理中] [敬请期待]
补充代码7:更多树结构之线段树 玩转数据结构 第九章
补充代码8:更多树结构之Trie 玩转数据结构 第十章
补充代码9:更多树结构之并查集 玩转数据结构 第十一章
第八章:递归和回溯法 章节C++源码 章节Java源码
8-1 树形问题 Letter Combinations of a Phone Number C++源码 Java源码
8-2 什么是回溯 C++源码 Java源码
8-3 排列问题 Permutations C++源码 Java源码
8-4 组合问题 Combinations C++源码 Java源码
8-5 回溯法解决组合问题的优化 C++源码 Java源码
8-6 二维平面上的回溯法 Word Search C++源码 Java源码
8-7 floodfill算法,一类经典问题 Number of Islands C++源码 Java源码
8-8 回溯法是人工智能的基础 N Queens C++源码 Java源码
补充代码1:更多和生成排列相关 [整理中] [敬请期待]
补充代码2:更多和组合相关 [整理中] [敬请期待]
补充代码3:更多和八皇后问题相关 [整理中] [敬请期待]
第九章:动态规划基础 章节C++源码 章节Java源码
9-1 什么是动态规划 C++源码 Java源码
9-2 第一个动态规划问题 Climbing Stairs C++源码 Java源码
9-3 发现重叠子问题 Integer Break C++源码 Java源码
9-4 状态的定义和状态转移 House Robber C++源码 Java源码
9-5 0-1背包问题 C++源码 Java源码
9-6 0-1背包问题的优化和变种 C++源码 Java源码
9-7 面试中的0-1背包问题 Partition Equal Subset Sum C++源码 Java源码
9-8 LIS问题 Longest Increasing Subsequence C++源码 Java源码
9-9 LCS,最短路,求动态规划的具体解以及更多 C++源码 Java源码
补充代码1:更多和斐波那契数相关 C++ Java
补充代码2:LIS问题的O(nlogn)解法 C++ Java
补充代码3:更多和背包问题相关 [整理中] [敬请期待]
补充代码4:另一个经典DP模型:回文子串数 [整理中] [敬请期待]
第十章:贪心算法 章节C++源码 章节Java源码
10-1 贪心基础 Assign Cookies C++源码 Java源码
10-2 贪心算法与动态规划的关系 Non-overlapping Intervals C++源码 Java源码
10-3 贪心选择性质的证明 [无代码] [无代码]
第十一章:课程结语 [无代码] [无代码]
11-1 结语 [无代码] [无代码]

课程练习题目录

课程练习题的参考答案可以在我的 Leetcode题解代码仓 中查询参考代码。如果在我的题解代码仓中没有你想要的问题的相应的代码,可以随时在课程问答区留言索要相应代码和简单的算法思路说明:)

章节 讲解例题 课程练习题
第一章 算法面试到底是什么鬼? [无] [无]
第二章 面试中的复杂度分析 [无] [无]
第三章 数组中的问题最常见
3-1 从二分查找法看如何写出正确的程序 [无] [无]
3-2 改变变量定义,依然可以写出正确的算法 [无] [无]
3-3 在LeetCode上解决第一个问题 Move Zeros 283 [无]
3-4 即使简单的问题,也有很多优化的思路 283 27 26 80
3-5 三路快排partition思路的应用 Sort Color 75 88 215
3-6 对撞指针 Two Sum II - Input Array is Sorted 167 125 344 345 11
3-7 滑动窗口 Minimum Size Subarray Sum 209 3 438 76
第四章 查找表相关问题
4-1 set的使用 Intersection of Two Arrays 349 [无]
4-2 map的使用 Intersection of Two Arrays II 350 [无]
4-3 set和map不同底层实现的区别 349 350 136 242 202 290 205 451
4-4 使用查找表的经典问题 Two Sum 1 15 18 16
4-5 灵活选择键值 4Sum II 454 49
4-6 灵活选择键值 Number of Boomerangs 447 149 719
4-7 查找表和滑动窗口 Contain Duplicate II 219
4-8 二分搜索树底层实现的顺序性 Contain Duplicate III 220 [无]
第五章 在链表中穿针引线
5-1 链表,在节点间穿针引线 Reverse Linked List 206 92
5-2 测试你的链表程序 206 83 86 328 2 445
5-3 设立链表的虚拟头结点 Remove Linked List Elements 203 82 21
5-4 复杂的穿针引线 Swap Nodes in Pairs 24 25 147 148
5-5 不仅仅是穿针引线 Delete Node in a Linked List 237 [无]
5-6 链表与双指针 Remove Nth Node Form End of List 19 61 143 234
第六章 栈、队列、优先队列
6-1 栈的基础应用 Valid Parentheses 20 150 71
6-2 栈和递归的紧密关系 Binary Tree Preorder, Inorder and Postorder Traversal 144 94 145 [无]
6-3 运用栈模拟递归 144 94 145 341
6-4 队列的典型应用 Binary Tree Level Order Traversal 102 107 103 199 346
6-5 BFS和图的最短路径 Perfect Squares 279 127 126 286
6-6 优先队列 [无] [无]
6-7 优先队列相关的算法问题 Top K Frequent Elements 347 23
第七章 二叉树和递归
7-1 二叉树天然的递归结构 104 111
7-2 一个简单的二叉树问题引发的血案 Invert Binary Tree 226 100 101 222 110
7-3 注意递归的终止条件 Path Sum 112 111 404
7-4 定义递归问题 Binary Tree Path 257 113 129 222
7-5 稍复杂的递归逻辑 Path Sum III 437 [无]
7-6 二分搜索树中的问题 Lowest Common Ancestor of a Binary Search Tree 783 235 98 450 108 230 236 530
第八章 递归和回溯法
8-1 树形问题 Letter Combinations of a Phone Number 17 [无]
8-2 什么是回溯 17 93 131
8-3 排列问题 Permutations 46 47
8-4 组合问题 Combinations 77 [无]
8-5 回溯法解决组合问题的优化 77 39 40 216 78 90 401
8-6 二维平面上的回溯法 Word Search 79 [无]
8-7 floodfill算法,一类经典问题 Number of Islands 200 130 417
8-8 回溯法是经典人工智能的基础 N Queens 51 52 37
第九章 动态规划基础
9-1 什么是动态规划 [无] [无]
9-2 第一个动态规划问题 Climbing Stairs 70 120 64
9-3 发现重叠子问题 Integer Break 343 279 91 62 63
9-4 状态的定义和状态转移 House Robber 198 213 337 309
9-5 0-1背包问题 [无] [无]
9-6 0-1背包问题的优化和变种 [无] [无]
9-7 面试中的0-1背包问题 Partition Equal Subset Sum 416 322 377 474 139 494
9-8 LIS问题 Longest Increasing Subsequence 300 376
9-9 LCS,最短路,求动态规划的具体解以及更多 [无] [无]
第十章 贪心算法
10-1 贪心基础 Assign Cookies 455 392
10-2 贪心算法与动态规划的关系 Non-overlapping Intervals 435 [无]
10-3 贪心选择性质的证明 [无] [无]

注: 课程讲义的PDF版本不在github上提供,大家可以在慕课网上 "下载 -> 查看讲师源码" 中各个章节文件夹下找到。

大家加油!:)

play-with-algorithm-interview's People

Contributors

liuyubobobo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

play-with-algorithm-interview's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.