算法面试专题课(Java版)【已完结 MK478】

  • 第1章 算法题解-课程介绍 试看

    课程简介:本套课程不讲算法基础知识,专攻算法题解。将主流经典的面试题全面归类梳理,带你掌握高效解题思路,摆脱题海战术, 让你短期内掌握算法面试体系,深入理解算法设计思路通过多题实践将算法思想付诸实践。

    共 2 节 (19分钟) 展开列表

  • 第2章 算法不难,算法很有趣

    万事开头难,提起计算机算法,很多同学可能觉得它很神秘、很难、很数学。其实算法源于生活,它可以形象地理解为,我们日常生活中做一件事情的具体流程。本章我们通过实际的例子,给大家树立起“算法不难学”的印象,培养起学习算法的兴趣。 …

    共 2 节 (16分钟) 收起列表

    •  2-1 有趣、简单的算法问题 (15:21)
    •  2-2 有趣简单的问题-图文解析
  • 第3章 数学问题:经典数学算法

    本章通过常见的数学相关的算法帮助大家理解面试、笔试中常见的数学算法相关的问题。

    共 8 节 (95分钟) 收起列表

    •  3-1 最大公约数算法 (24:20)
    •  3-2 最大公约数算法-图文解析
    •  3-3 快速模取幂算法 (19:08)
    •  3-4 快速模取幂算法-图文解析
    •  3-5 组合计数算法 (27:01)
    •  3-6 组合计数-图文解析
    •  3-7 概率相关算法 (24:26)
    •  3-8 概率问题-图文解析
  • 第4章 数组相关问题

    数组可谓大家最熟悉的数据结构了,我们甚至都不把它作为一种数据结构——因为几乎所有编程语言都有内置的数组类型,我们往往不自觉地在使用它。别看它结构简单,我们也不能小瞧它,涉及到数组的题目可谓千变万化、层出不穷。但是万变不离其宗,我们通过典型的例题帮助大家理解数组问题的套路和解法。 …

    共 11 节 (122分钟) 收起列表

    •  4-1 数组作为存储单元 (15:46)
    •  4-2 数组作为存储单元-图文解析
    •  4-3 荷兰国旗问题 (10:47)
    •  4-4 数组作为特殊map (17:26)
    •  4-5 分桶原理求解最宽空矩形区域 (17:32)
    •  4-6 数组——作为特殊map-图文解析
    •  4-7 双指针在数组的应用 (23:47)
    •  4-8 数组——双指针-图文解析
    •  4-9 数组 滑动窗口 (20:55)
    •  4-10 替换子串使得字符串平衡问题 (15:33)
    •  4-11 数组——滑动窗口-图文解析
  • 第5章 链表相关的问题

    链表可谓数组的亲兄弟,在笔试面试中,链表的题目不算多——因为它也算比较简单的数据结构。和数组一样,我们通常可能也不把链表作为一种数据结构。到那时我们同样不可轻视它,涉及到链表的题目大多不算太难,但是比较繁琐,我们在本章就和大家聊聊链表最基本的增、删、查、改等操作。 …

    共 12 节 (129分钟) 收起列表

    •  5-1 熟悉最基本的链表操作 (09:20)
    •  5-2 链表——基本操作-图文解析
    •  5-3 删除和为 0 的连续节点问题 (16:55)
    •  5-4 链表之懒删除 (13:49)
    •  5-5 链表的懒删除-图文解析
    •  5-6 链表翻转 (21:44)
    •  5-7 链表的翻转-图文解析
    •  5-8 链表之滑动窗口1 (19:57)
    •  5-9 链表的滑动窗口1-图文解析
    •  5-10 链表滑动窗口2 (18:12)
    •  5-11 链表的滑动窗口2-图文解析
    •  5-12 链表复制 (28:54)
  • 第6章 堆栈相关问题

    堆栈是一种简单的数据结构。我们在日常生活中洗碗后叠在一起,就是一个天然堆栈的体现。计算机中的堆栈就是日常生活中这些例子的抽象,本章我们会总结探讨堆栈相关的问题。

    共 8 节 (93分钟) 收起列表

    •  6-1 最基本的堆栈实现与应用 (22:37)
    •  6-2 堆栈的基本操作-图文解析
    •  6-3 递归问题的堆实现——隐式堆栈 (18:44)
    •  6-4 递归与隐式堆栈-图文解析
    •  6-5 二叉树遍历与堆栈 (21:33)
    •  6-6 二叉树遍历与堆栈-图文解析
    •  6-7 单调堆栈及应用 (30:00)
    •  6-8 单调堆栈-图文解析&作业
  • 第7章 队列相关问题

    队列是先进先出的结构。日常生活中我们就会排队,计算机中的队列就是日恒生活中排队的抽象。本章我们用过例题来认识、理解队列并学习显示、隐式队列的应用

    共 12 节 (135分钟) 收起列表

    •  7-1 简单队列的应用与实现 (24:13)
    •  7-2 简单队列的应用与实现-图文解析&作业
    •  7-3 双端队列的实现 (21:12)
    •  7-4 双端队列实例-图文解析&作业
    •  7-5 环形队列的实现 (20:09)
    •  7-6 循环/环形队列实例-图文解析&作业
    •  7-7 两个队列模拟堆栈 以及 两个堆栈模拟队列 (23:27)
    •  7-8 堆栈和队列互相模拟-图文解析&作业
    •  7-9 单调队列的应用 (25:08)
    •  7-10 单调队列-图文解析&作业
    •  7-11 BFS一例 (20:47)
    •  7-12 BFS一例-图文解析&作业
  • 第8章 分治的特例——二分查找

    二分查找是计算机科学中的一个常见且重要的算法。它基于的思想是判断一个给定的候选解是不是一个问题的真正的解比找到问题的一个真正的解容易。所以计算机也不是高高在上、万能的。我们要相信,如果我们不知道问题的解,则计算机通常也不知道。所以我们帮助计算机来“猜”一个解,再来判断这个解是否合适来调整我们的才想。…

    共 8 节 (76分钟) 收起列表

    •  8-1 二分算法简介 (21:54)
    •  8-2 二分查找算法-图文解析&作业
    •  8-3 “先猜后证”(1) (14:17)
    •  8-4 “先猜后证”(2) (13:27)
    •  8-5 先猜后证-图文解析&作业
    •  8-6 复杂的二分查找(1) (13:17)
    •  8-7 复杂的二分查找(2) (12:36)
    •  8-8 复杂的二分查找算法-图文解析&作业
  • 第9章 递归与分治

    我们在解决一个大问题的时候,通常也会把它切分为小问题,来一个一个解决。这是因为小问题往往比大问题更容易解决。这就是分而治之,各个击破的思想。本章,我们来聊聊如何通过计算机算法实现这个简单朴素的思想。同时,在计算中解决小问题的模式通常以相同或相似的形式出现,从而就出现了递归。递归不神秘,分治很简单,…

    共 10 节 (97分钟) 收起列表

    •  9-1 递归一例:一个“不太好”的例子 (19:52)
    •  9-2 斐波那契数、就阶乘-图文题解&作业
    •  9-3 递归再例:八皇后问题(上) (13:11)
    •  9-4 -2 递归再例:八皇后问题(下) (11:38)
    •  9-5 八皇后题解-图文解析&作业
    •  9-6 理解递归:递归就是隐式图搜索、枚举 (23:49)
    •  9-7 隐式图搜索-图文解析&作业
    •  9-8 用递归框架举例(DFS), 利用递归实现二分查找(上) (13:41)
    •  9-9 用递归框架举例(DFS), 利用递归实现二分查找(下) (13:59)
    •  9-10 递归的分治框架-图文解析&作业
  • 第10章 图相关算法

    图论起源于著名数学家欧拉所研究的“七桥问题”,也就是通常我们说的一笔画问题。计算机算法面试中的图论问题,通常也不会太难,但是它涉及到的知识点比较多,例如二叉树、广度优先、深度优先等等。图论问题的特点就是综合性强,这也是在笔试面试中,命题人钟爱图论问题的元素之一吧。我们将在本章中聊聊面试中的图论问题—…

    共 15 节 (154分钟) 收起列表

    •  10-1 广度优先搜索(BFS) (22:23)
    •  10-2 广度优先搜索-图文解析&作业
    •  10-3 深度优先搜索 (22:41)
    •  10-4 深度优先搜索-图文解析&作业
    •  10-5 二叉树的几种遍历方法.mp4 (20:55)
    •  10-6 二叉树遍历方法-图文解析&作业
    •  10-7 最小生成树(上) (14:38)
    •  10-8 最小生成树(下) (15:44)
    •  10-9 最小生成树-图文解析&作业
    •  10-10 拓扑排序(上) (13:40)
    •  10-11 拓扑排序(下) (14:43)
    •  10-12 拓扑排序-图文解析&作业
    •  10-13 最短路算法的一种实现(上) (15:08)
    •  10-14 最短路算法的一种实现(下) (13:37)
    •  10-15 最短路的一种实现
  • 第11章 贪心算法

    贪心算法是最简单、最直截了当的算法。比如我们学过的最小生成树的Prim和Krusal算法,以及最段路的dijkstra算法都是贪心算法的经典例子。贪心算法有着简单、优美的魅力。而贪心算法的难点在于证明,在本章中我们和大家聊聊贪心算法的经典应用,并对部分问题给出理论或者感性上的证明。 …

    共 7 节 (66分钟) 收起列表

    •  11-1 最简单的贪心算法 (15:59)
    •  11-2 贪心算法初识-图文解析&作业
    •  11-3 贪心算法进阶 (18:48)
    •  11-4 中级贪心算法图文解析&作业解析
    •  11-5 高级贪心算法及证明(1) (15:56)
    •  11-6 高级贪心算法及证明(2) (14:58)
    •  11-7 高级贪心算法-图文解析&作业
  • 第12章 位运算

    位运算是计算机所特有的操作,因为计算机只认识0和1,所以它们天然地“善于”位运算操作。我们在本章和大家探讨下一些位元算在解决问题时的经应用,同时也为学习动态规划打下一些基础。因为有一类动态规划题目的状态表示需要使用位运算。 …

  • 第13章 动态规划

    动态规划几乎是笔试和面试的必考题,可谓重中之重, 不少人可能对其望而生畏。本章我们通过一些题目,对动态规划的基本思想做一些总结,形成一些解动态规划题目的“套路”,从而让大家轻松应对这类题目。

  • 第14章 杂题-那些你想不到的题

    有些题目很难归类,但是又真实存在,它需要我们综合所学的知识点并灵活运用。所谓“戏法人人会变,各有巧妙不同”,大家学到的知识点都是类似的,但是要达到灵活运用、融会贯通,还需假以时日,勤学苦练。本章我们通过一些典型的例题,帮助大家梳理知识点,同时讨论一些有趣的的题目。 …

  • 第15章 必备软技能-防止思路上的盲点

    程序员不仅仅是低头写码,还要与人沟通。虽然我们总说”show me the code“,但是代码并不是我们交流的唯一手段。更何况,我们在实现代码之前,通常需要简单和别人交流下思路,以防止思路上的盲点,另外我们还有很多的设计文档、代码注释需要完成,这些无疑需要我们有良好的沟通能力。面试中也一样,面试官也是人,他通…

  • 第16章 总结与展望

    面试体系总结展望,放眼未来。

本课程持续更新中

发表评论