欢迎光临散文网 会员登陆 & 注册

大厂老师带刷LeetCode,饥人谷算法系统班第3期

2023-05-23 17:25 作者:饥人谷后端开发  | 我要投稿

Vol.0/   学长学姐有话说            

   

了解课程之前,先来看看算法课学长学姐们是怎么评价咱们的算法课吧~~
   

第一位同学说:“构建与完善了算法知识体系。”
   

  

   第二位同学说:“老师提供的模板非常实用。”

   

    第三位同学说:“题量充足,解题有思路,融会贯通。”

   

    第四位同学说:“用了7周已经对面试中的算法和基本的数据结构有了很大程度的了解。”

   

    其他同学也收获了很多,还在观望的同学们,算法班第3期可以入手啦~~


   Vol.1/   老师有话说            

      

无隅老师        

本科、硕士毕业于北邮,曾任职于亚马逊中国研发中心;担任多年面试官,面试过100+候选人;社招拿到美团L8,  阿里P7,头条2-2等offer,总包均过百万年薪         

大家好,我是无隅,近期我的《算法体系课》(2023版第3期)(PS.前20人送价值399元的 《大厂面试手写代码合集》课程!)即将开班,很高兴即将和大家一起度过三个月的时光。  之所以推出我的算法体系班基于三个原因:1. 我的资历能够胜任;2. 准备充分时机成熟;3. 工作多年对算法学习的感悟和总结。        

原因1个人资历。简单介绍一下我自己  ,我目前就职于一家北美知名外企,也是公司内最年轻的tech leader之一。本科和硕士毕业于中国互联网黄埔军校北邮,但在学校的课堂上我并没有对算法有任何重视。当决定要冲刺FLAG大厂的时候,发现算法是必考项,在了解到算法的重要性后经过一段非常痛苦的挣扎,我总结出一套足以应付大厂算法面试的方法,帮助自己在三个月内快速学习,最终顺利拿到了  FLAG公司的offer ,直到现在也在这个行业里从业了  五六年 的时间。  正式工作后,基本每隔一年我都会出来看机会。在今年我依然拿到了  美团L8、阿里P7、头条2-2和一些创业公司实线leader的职位  ,  年包均超过百万 。即便工作多年,基本上每一次大厂面试都会遇到两三道算法题,基于早期的算法知识储备和学习经验,每次面试应对算法题都如探囊取物。同时我作为公司的面试官也曾  面试过百位以上的技术候选人,对求职者算法能力有非常清晰的需求。所以,我自认为完全有能力带着大家学好算法。    

原因2算法训练营推出时机已经成熟。其实早在2018我就来谷里上课,到目前没中断过。陆续出过《Java8新特性》、《Java设计模式》、《Java微服务架构》、《程序员的算法课》等视频课程。这些年的讲课经验让我对自己课程把控能力越来越自信,但视频课总归离学生太远。今年,我内心有越来越强烈的冲动想推出自己的算法系统课训练营——拥有自己的学生,重构知识体系,重构学习流程,完全把控他们的学习过程,最终亲自检验他们的学习成果。就像一个武林老者以前没事只是爱写点武林秘籍,但现在却非常想收徒弟亲传内功亲点招式。  原因3对算法学习的感悟和总结。  现在的面试要求逐年提高,不论你是应届生面对校招,还是已经工作了很多年的社招老鸟,甚至现在卷到即使是实线管理岗,算法面试都是必须要面对的。很多同学虽然技术不错,但每次去面试都会跪在算法上,非常可惜。看到很多同学依然觉得算法面试太难,是很难跨过的一道坎,所以放弃了追逐心中dream offer的想法。        

所有学算法的同学基本上都尝试过leetcode上算法刷题,成功者却少之又少。失败的最主要原因是半途而废。

一方面是因为leetcode有数千个题目,很多题目是同质的,如果不会归纳总结,没有一个体系、重点的概念,每题都刷,就像一个人在无边无际的稻田里插秧,看不到终点没有目标,自然坚持不下去。另一方面,算法题本质是智商题。很多题目虽小代码虽短,但题目背后的原理却很深很难。别人的答案(算法代码实现)是原理的体现,懂了原理很容易懂代码,但不懂原理很难知道别人为什么这么做。刷算法时会发现前面简单的刷起来很快,到中期即使是看别人的代码也很难看懂,刷题进度自然会停滞。        

题是一定要刷的,如何让大家花最少的时间刷的懂、刷的爽、刷的有技巧、刷的系统、不轻易放弃,是本次算法系统班的核心目标。

训练营将非常注重方法论与知识体系的构建  。我希望算法体系课程不单单教给大家一道题一个知识点是怎么样的,更希望能通过算法数据结构的学习,帮助大家掌握一些常用的方法论与结构化思维模型,让大家今后的学习之路更加容易顺畅。        

除了知识体系化之外,因为算法面试的主要形式就是现场写代码,课程内涉及的所有题目,我们都会延续看题目->讲思路->写代码的模式  。这里的看题目不单单是讲题目说的字面意思,而是会深入题目背后,挖掘要考察的知识点和与其他的知识联系。讲思路会带领大家仔细分析每一道题目,梳理思路,总结模版与套路。我们不只在乎刷题的数量,更在乎刷题的质量,对于同一道题目,希望能给大家讲透,提供多种方法。        

写代码这一步是我们和其他很多算法课程完全不一样的地方,我们不会照着ppt讲义讲写好的代码,而是会直接打开每一道题对应leetcode链接,现场写代码调试运行。同学们可以跟着我一起打开leetcode,边看边跟着我写。跟着我做一遍,然后自己做一遍,下一周再在纸上手写一遍,集中一次性突破一个知识点。这样,每一道题目至少做了三遍,每一遍做的时候,能总结反思自己出错的原因,真正搞明白每一道题目。

学生的作业就是在leetcode刷题,这些题目大都是我在课程里现场手写刷过的题。我会每日安排学生具体的刷题量,在班级严格监督大家的刷题结果。我对大家作业完成度的重视和课程本身同等重要。

所以大家也需要做好心理准备,我们的课程强度非常大,但是大家只要做好短时间痛苦一次的准备,一次搞清楚,以后的收益也是无限的,只要大家跟着我的步伐,在接下来的三个月的课程中,大家一定能够看到自己突飞猛进的进步。

          

https://wj.qq.com/s2/10494833/082b/


Vol.2/   学习模式            

本期算法训练营总学习时间持续三个月(12周)。

日常的学习安排上,每周日上午发布下一周的知识点与刷题视频+ 每周互动直播 每日刷题跟进 +  班级  学习监督 + 期中期末考试

首先,我们会在开始学习之前让每位同学做一份摸底测试,了解大家的算法基础,老师会根据你的基础情况给你反馈出之后你的算法学习重点和学习路线。

摸底测试和部分老师评价反馈展示
       

        

        

        

        


       

整个训练营的核心目标是在老师的带领下独自刷完200道leetcode算法题,且每道题刷3遍,每一遍刷题之后都要写下自己的刷题思路和反馈。同时,老师会把题目都分成:  必做题,拓展题,难题 ,这3类,大家可以根据自己的基础情况和时间来规划。

        

        


       

每周1次直播班会,每周班会都有对应的主题,有知识点串讲、读书分享会、职场晋升之路、学习上踩过的坑、技术简历怎么写、模拟面试和面试中的非技术问题怎么回复等,还会和大家一起讨论并讲解当周知识重难点,会检查大家当周刷题情况,给予物质表扬和口头批评,同时标注下周的刷题重点。

        

        

        

        

        


       

在教务管理上我们会给班级所有的同学建立一个花名册,把每周的刷题都布置上去,大家每完成一道题,就勾选,老师和同学可以很直观的看到每位同学的学习刷题情况,及时跟进和提供帮助。

        


       

每周学习安排:

              

Vol.3/   你将获得            


   

  1. 一些常用的方法论与结构化思维

  2. 体系化的算法与数据结构知识

  3. leetcode近两百道题目的AC记录

  4. 全方面了解面试流程与准备流程,面试时做到真正的心中有数

  5. 职场发展与软技能

  6. 一群志同道合的小伙伴,未来重要的人脉

Vol.4/   知识大纲            


   

我们算法班的内容是非常多的,大纲也是非常非常非常长,同学们也可以直接点击下面链接查看哦~~    

饥人谷算法班大纲(第3期):https://docs.qq.com/doc/DVEdlVWVmTnJ0c1Rt    

   

    

【第零周】 算法面试中的套路:高效准备算法面试    

  • 算法还有用吗?

  • 面试流程详细解读

  • 深入技术面试过程

  • 找到好工作的关键是什么?

  • 面试官视角下的面试

  • 算法面试中的常见问题与误区

  • 算法面试问题标准解答流程

  • 如何高效准备算法面试

【第零周】 刷题与面试常用网站工具介绍    

  • 刷题网站leetcode介绍

  • 后疫情时代:在线面试介绍

【第零周 - 番外】Java基础知识速学    

  • 如何快速安装运行java

  • 第一个Java程序:如何打印Hello World

  • 变量与赋值

  • Java中的数据类型之基本类型

  • 引用类型与数组用法详解

  • 字符串基本操作

  • 赋值、算术和一元运算符

  • 关系运算符与条件运算符

  • 位运算与移位操作符

  • 控制语句:决策语句 -  if/switch语句

  • 控制语句:循环语句 - for/while/do-while

  • 控制语句:分支语句

  • Java面向对象概念初探

  • 修饰符

    • 访问修饰符

    • 非访问修饰符

  • 方法(函数)编写入门

    • 方法定义

    • 方法调用

  • 不得不知道的重要知识:基本类型赋值 V.S 引用类型赋值

    • 数据在内存中是如何存储的

    • 基本类型赋值

    • 引用类型赋值

【第零周 - 番外】必要的准备工作    

  • 课程定位和目标

  • 课程内容介绍

  • 为啥用Java作为代码示例语言?

  • 不会Java能学吗?

  • 算法体系课程学习指南(重要)

  • 算法基础水平摸底考试

  • 如何让你刷100多题搞定算法面试

【   第零周】 数学基础知识 101    

  • 集合

  • 函数

  • 排列与组合

  • 数学归纳法

  • 数列


               

    

【第一周】面试理论基石 - 算法复杂度    

面试重灾区:时间复杂度到底是多少?    

  • 什么是时间复杂度

  • 评判算法时间复杂度

  • 教你一次搞定计算时间复杂

    • 青铜:基本操作的时间复杂度计算

    • 黄金:For/While循坏时间复杂度计算

    • 钻石:复合操作时间复杂度计算:加还是乘?

    • 实战:一般问题时间复杂度计算

    • 星耀:递归问题的时间复杂度计算之求解函数表达式

    • 王者:递归问题的时间复杂度计算之递归树

    • 荣耀王者:递归问题的时间复杂度计算之主定理与经验性结论

    • 实战:递归问题时间复杂度计算

遗漏的角落:空间复杂度    

  • 面试中极为容易遗漏的地方:空间复杂度

【第一周】使用频率Top1的数据结构 - 数组与数组列表    

最基本的数据结构:数组    

  • 什么是数组?

  • 数组的特性

  • Java中如何表示数组

  • 为啥用数组

  • 数组操作的局限性

数组典型面试题目实战    

  • 【实战】K-Sum系列问题

    • 初级:两数之和

    • 中级:三数之和

    • 高级:四数之和

    • 高级:K-Sum解法总结

  • 【实战】反转数组

  • 【实战】奇数偶数排序

  • 【实战】合并两个有序数组

前缀和技巧详解与实战    

  • 【实战】区域和检索 - 数组不可变

  • 【实战】一维数组的动态和

  • 【实战】所有奇数长度子数组的和

  • 【实战】和为k的子数组

  • 【实战】二维区域和检索 - 矩阵不可变

  • 【实战】除自身以外数组的乘积

工作中最高频的数据结构:数组列表    

  • 数组列表ArrayList的定义与基操

  • 动手实现数组列表

    • 实现一个数组列表需要考虑什么?

    • 动手实现数组列表:属性及构造器

    • 动手实现数组列表:方法及函数

    • 动手实现数组列表:Get方法与Set方法

    • 动手实现数组列表:Add方法实现与动态扩容

    • 动手实现数组列表:Remove方法

    • 功能测试/bug fix/泛型支持

    • ArrayList的实现总结

【第一周:番外】如何写好单元测试    

  • AAA测试大法


               

    

【第二周】 人人都要会的数据结构 - 栈和队列(一分钟帮你理解栈和   队列)    

栈的实现与使用    

  • 栈的初始化与基本操作

  • 什么时候考虑使⽤栈

  • 动手实现栈

    • 实现一个栈需要考虑什么?

    • 栈的实现 – 属性及构造器

    • 栈的实现 – ⽅法、函数

  • 拓展:栈和堆在计算机操作系统上的概念

队列的实现与使用    

  • 队列的初始化与基本操作

  • 什么时候考虑使⽤队列

  • 动手实现栈队列

    • 实现一个栈需要考虑什么?

    • 队列的实现(数组)

      • 属性及构造器

      • ⼊队操作

      • 出队操作

      • ⽤数组实现队列的问题?

    • 队列的实现(链表)

      • 属性及构造器

      • ⼊队操作

      • 出队操作

栈与队列典型题⽬实战    

  • 【实战】⽤栈实现队列

  • 【实战】用队列实现栈

  • 【实战】最⼩栈

  • 【实战】有效的括号

  • 【实战】简化路径

  • 【实战】逆波兰表达式

王者数据结构单调栈实战    

  • 单调栈介绍

  • 单调栈运作过程详解

  • 单调栈代码模版

  • 【实战】单调栈中核心问题:Next Greater Number

  • 【实战】每日温度

  • 【实战】下一个更大的元素I

  • 【实战】下一个更大的元素II

  • 【实战】柱状图中最大的矩形

  • 【实战】接雨水

【第二周】 O(logn)的查找算法 - 二分搜索    

二分搜索理论部分    

  • 从一个简单问题看二分搜索

  • 二分搜索模版

    • 模版精讲

    • 二分搜索模版四要素

    • 面试中是否使用递归的tips

    • 利用主定理速推时间复杂度

二分搜索高频题目实战       

  • 【实战】模版题:二分搜索

  • 【实战】第一个错误的版本

  • 【实战】在排序数组中查找元素的第一个和最后一个位置

  • 【实战】搜索插入位置

  • 【实战】搜索二维矩阵

  • 【实战】搜索二维矩阵 II

  • 【实战】x的平方根

数组区间有序的二分问题    

  • 【实战】寻找旋转排序数组中的最小值

  • 【实战】寻找旋转排序数组中的最小值II

  • 【实战】山脉数组的峰顶索引

  • 【实战】搜索旋转排序数组

【第二周】 知道就能赢得面试官好感的方法 - 面试中的代码风格    

谈谈代码风格    

  • 什么是代码风格

  • 为啥代码风格重要?[跟写作文中写字好看一样的道理]

面试代码风格    

  • 命名

  • 空格

  • 缩进

  • 括号


               

    

【第三周】 面试最爱考的数据结构 1 - 链表    

链表理论部分    

  • 链表介绍与特性详解

  • 链表应用实例

  • 如何实现链表与基础操作 - 大体框架

  • 如何实现链表与基础操作 - 获取操作

  • 如何实现链表与基础操作 - 添加操作

  • 如何实现链表与基础操作 - 修改操作

  • 如何实现链表与基础操作 - 删除操作

  • 如何实现链表与基础操作 - 获取链表长度

  • 链表使用技巧之Dummy Node

与链表计数和位置相关问题实战    

  • 【实战】得到链表中点元素

  • 【实战】链表高频题目:链表中倒数第k个节点

  • 【实战】环形链表I

  • 【实战】环形链表II

与链表计数和位置相关问题实战    

  • 【实战】得到链表中点元素

  • 【实战】链表高频题目:链表中倒数第k个节点

  • 【实战】环形链表I

  • 【实战】环形链表II

与链表结构变化相关问题实战    

  • 【实战】合并两个有序链表

  • 【实战】两数相加

  • 【实战】删除链表的倒数第 N 个结点

  • 【实战】删除排序链表中的重复元素

  • 【实战】删除排序链表中的重复元素II

  • 【实战】反转链表 I

  • 【实战】反转链表 II

  • 【实战】交换相邻结点

  • 【实战】两数相加II

链表综合类相关问题实战    

  • 【实战】重排链表

  • 【实战】回文链表

  • 【实战】旋转链表

【第三周】 必须掌握的计算机思维 - 递归    

说透递归    

  • 从一个故事一张图理解递归

  • 递归三要素

  • 递归的代码问题

面试中简单递归问题实战    

  • 【实战】斐波那契数列

  • 【实战】汉诺塔

               

    

【第四周】面试最爱考的数据结构 2 - 二叉树与二叉搜索树    

普通的“树”    

  • 树的定义

  • 树的分类

  • 树的相关概念与术语

二叉树    

  • 二叉树概念

  • 特殊的二叉树

    • 完全二叉树

    • 满二叉树

  • 二叉树的属性

  • 二叉树的表示

二叉树的三种遍历(前序/中序/后序)    

  • 二叉树三种遍历详解

  • 【实战】二叉树遍历-递归实现

  • 【实战】非递归实现二叉树前序遍历方法1 - 利用栈改变元素顺序

  • 【实战】非递归实现二叉树前序遍历方法2 - 模拟递归

  • 【实战】非递归实现二叉树中序遍历- 模拟递归

  • 【实战】非递归实现二叉树后序遍历方法1 - 利用两个栈

  • 【实战】非递归实现二叉树后序遍历方法2 - 利用一个栈模拟递归

  • 拓展:神级遍历算法 - Morris遍历

二叉树的构建    

  • 基础分析

  • 【实战】从前序与中序遍历序列构造二叉树

  • 【实战】从后序与中序遍历序列构造二叉树

二叉搜索树    

  • 二叉搜索树特性

  • 二叉搜索树API实现:查找节点

  • 【实战】二叉搜索树中的搜索

  • 二叉搜索树API实现:添加节点

  • 【实战】二叉搜索树中的插入操作

  • 二叉搜索树API实现- 删除节点:删除节点没有任何子树节点

  • 二叉搜索树API实现- 删除节点:删除节点只有一个子树

  • 二叉搜索树API实现- 删除节点:删除节点有左右两个子树

  • 【实战】删除二叉搜索树中的节点

【第四周】 必须要掌握的搜索算法1 - 深度优先搜索与树中的DFS    

两大常见搜索算法初探    

  • 三分钟入门DFS和BFS

  • DFS在面试中的考察范围

  • DFS模版- 一般问题与二叉树

拓展:分治法    

  • 分治法详解

  • 分治法V.S 遍历法

  • 分治法模版详解

树中DFS问题实战    

  • 【实战】二叉树的最大深度

  • 【实战】⼆叉树的最⼩深度

  • 【实战】翻转二叉树

  • 【实战】对称二叉树

  • 【实战】平衡二叉树

  • 【实战】路径总和

  • 【实战】二叉树的最近公共祖先

  • 【实战】验证二叉搜索树

  • 【实战】二叉树中的最大路径和


               

    

【第五周】 深度优先算法   + 剪枝:回溯法    

回溯法简介    

  • 题目特点

  • 从递归问题说起

  • 从递归问题到回溯法

  • .回溯法模版心法

  • 【重要】回溯法模版:以子集问题为例 - 题目分析与思路讲解

  • 【重要】回溯法模版:以子集问题为例 - 模版代码实现

  • 【重要】回溯法模版总结- 以子集问题为例

回溯法典型实战    

  • 【实战】子集II

  • 【实战】全排列

  • 【实战】全排列II

  • 【实战】组合总和

  • 【实战】组合总和 II

  • 【实战】复原 IP 地址

  • 【实战】电话号码的字母组合

  • 【实战】括号生成

  • 【实战】格雷编码

  • 【实战】二叉树的所有路径

  • 【实战】根节点到叶节点求和

  • 【实战】路径总和 II

  • 【实战】分割回文串:直接回溯

  • 【实战】分割回文串:记忆化搜索优化

  • 【实战】单词拆分

  • 【实战】单词拆分II - 直接回溯

  • 【实战】单词拆分II - 记忆化搜索

               

    

【第六周】期中考试周    


   

    

   

【第七周】深度优先算法3   :一般问题的深度优先搜索       

图论初探    

  • 图的基础概念

  • 图的表示:邻接矩阵

  • 图的表示:邻接表

  • 图搜索:DFS V.S BFS

一般图中的DFS问题    

  • 图中DFS模版详解与实现

  • 【实战】无向图中连通分量的数目

  • 【实战】省份数量

  • 【实战】以图判树

  • 【实战】克隆图

二维DFS问题    

  • 二维DFS问题分类与题目特点

  • 小技巧:如何在二维空间内移动

  • 二维DFS模版

  • 【实战】迷宫问题

  • 【实战】单词搜索

  • 【实战】矩阵中的最长递增路径

  • 【实战】岛屿数目

  • 【实战】岛屿的最大面积

  • 【实战】被围绕的区域

  • 【实战】岛屿的周长

【第七周】必须要掌握的搜索算法2:广度优先搜索    

广度优先搜索介绍    

  • 基本思想

  • 什么时候使用广度优先搜索

  • BFS模板以及实现

树中BFS问题实战    

  • 【实战】 二叉树的层序遍历I/II

  • 【实战】二叉树的锯齿形层序遍历

  • 【实战】N叉树的层序遍历

  • 【实战】二叉树的最小深度

  • 【实战】二叉树的最大深度

图中BFS实战    

  • 图中的BFS模版

  • 【实战】无向图中连通分量的数目 - BFS解法

  • 【实战】省份数量 - BFS解法

  • 【实战】以图判树 - BFS解法

  • 【实战】克隆图 - BFS解法

二维问题BFS实战    

  • 二维矩阵问题BFS模版详解

  • 【实战】岛屿数量 - BFS解法

  • 【实战】被围绕的区域 - BFS解法

拓扑排序实战    

  • 拓扑排序 101

  • Kahn算法:求解有向图拓扑排序

  • 拓扑排序Kahn算法代码实现

  • 【实战】课程表II

  • 【实战】课程表I

最短路径BFS相关问题    

  • 最短路径BFS相关问题特点

  • 【实战】经典迷宫求最短路径

  • 【实战】迷宫II

  • 双向BFS介绍

  • 【实战】单词接龙 - 利用单向BFS求解

  • 【实战】单词接龙 - 利用双向BFS求解

  • 【实战】单词接龙II

               

    

【第八周】面试必考的算法 - 排序算法    

⾯试中的排序算法    

  • 面试中对于排序算法到底要掌握到什么程度?

最基本的排序算法:插⼊排序   
基本思想与时间复杂度分析
    

  • 示例代码

  • 循环不变式 for while

最傻的排序算法:冒泡排序    

  • 基本思想与时间复杂度分析

  • 示例代码

面试必会排序算法1: 归并排序    

  • 基本思想与时间复杂度分析

  • 分治法

  • 示例代码

面试必会排序算法2: 快速排序    

  • 基本思想与时间复杂度分析

  • 示例代码

  • 扩展1: 快速排序随机化版本

  • 扩展2:期望为线性时间的选择算法(quick select)

  • 【实战】求数组nums中第k大/⼩的元素

排序相关问题实战    

  • 【实战】对链表进行插入排序

  • 【实战】排序链表 - 利用归并排序实现

  • 【实战】排序链表 - 利用快速排序实现

  • 【实战】颜色分类

  • 【实战】数组中的逆序对

  • 【实战】计算右侧小于当前元素的个数

  • 【实战】区间和个数

【第八周】查询时间为O(1)的数据结构 - 哈希表    

理论部分    

  • 什么是哈希表

  • 哈希表的基本操作

  • Hash Function哈希函数

  • 如何解决哈希冲突

    • 开散列

    • 闭散列

  • 哈希表的实现原理

  • 哈希扩容问题

拓展:Java中常见Map的原理与实现    

  • Java中HashMap的基本使用

  • HashMap原理与实现详解

  • ConcurrentHashMap原理与实现详解

哈希表相关问题实战    

  • 【实战】设计哈希映射(动手实现HashMap)

  • 【实战】存在重复元素I

  • 【实战】存在重复元素II

  • 【实战】两数之和

  • 【实战】同构字符串:利用一个map

  • 【实战】同构字符串:利用两个map

  • 【实战】单词规律

  • 【实战】有效字母异位词

  • 【实战】字母异位词分组

  • 【实战】整数转罗马数字

  • 【实战】罗马数字转整数

缓存相关问题实战    

  • 缓存知识简介

  • LRU原理与LinkedHashMap介绍

  • 【实战】LRU Cahce:利用Java LinkedHashMap

  • 【实战】LRU Cahce:利用Map + 自定义双向链表

               

    

【第九周】面试最高频算法 - 双指针算法    

相遇型双指针之Two   Sum 类题目实战    

  • Two Sum问题分析

  • 【实战】两数之和

  • 【实战】三数之和

  • 【实战】小于 K 的两数之和

  • 【实战】有效三角形的个数

  • 【实战】较小的三数之和

  • 【实战】最接近的三数之和

相遇型双指针之划分类题目实战    

  • 划分类问题分析与模板详解

  • 【实战】摆动排序

相遇型双指针之灌水类题目实战    

  • 灌水类问题分析与模板详解

  • 【实战】盛最多水的容器

  • 【实战】接雨水

同向型双指针之窗口类题目实战    

  • 窗口类模板详解

  • 【实战】长度最小的子数组

  • 【实战】无重复字符的最长子串

  • 【实战】最小覆盖子串

同向型双指针之   快慢类题目实战    

  • 【实战】得到链表中点元素

  • 【实战】得到链表的倒数第N个节点

  • 【实战】环形链表 I 

  • 【实战】环形链表 II 

两双类题目实战(双指针with双数组)    

  • 【实战】合并两个有序数组

  • 【实战】合并两个有序链表

  • 【实战】最小差

【第九周】重点只考3道题的数据结构 - 堆    

理论部分    

  • 堆的实现与复杂度分析

  • 堆排序

堆重点题目实战    

  • 【实战】找出第k大的数

  • 【实战】合并k个有序链表/数组

  • 【实战】数据流中位数

  • 【实战】滑动窗口最大值

堆其他问题实战    

  • 【实战】丑数

  • 【实战】排序矩阵中第k小的元素

堆难题题目实战    

  • 【实战】接雨水II 

  • 【实战】天际线


               

    

【第十周】王者难度算法 - 动态规划之基础篇    

动态规划初探    

  • 动态规划题目特点

  • 什么是动态规划(感性版认识)

从⼀道题⽬看动态规划    

  • 递归版解法

  • ⾃顶向下的动态规划

  • ⾃底向上的动态规划

  • 更进⼀步:空间优化

  • 动态规划空间优化:滚动数组

算法导论中的动态规划    

  • 什么是动态规划 (算法导论)

  • 4个步骤设计动态规划 (算法导论)

  • 核⼼:状态转移⽅程

  • 拓展:⼦问题图

  • 适合动态规划求解的条件

动态规划常用技巧    

  • 空间优化

  • 局部最优和全局最优实现时间优化

  • 记忆化搜索


               

    

【第十一周】王者难度算法 - 动态规划之进阶篇    

⾯试常见的动态规划题目实战    

  • 坐标型动态规划

  • 序列型动态规划

  • 划分型动态规划

  • 区间型动态规划

  • 背包型动态规划

  • 博弈型动态规划


               

    

【第十二周】 期末考试周    


   

    

番外:其他好玩儿的数据结构    

  • 并查集

  • 字典树

  • 前缀和

  • 跳表

  • 洗牌算法

  • 采样算法

  • B树/B+树

  • 布隆过滤器

番外:一些常用方法论与思维模型    

  • 邓宁-克鲁格效应(Dunning-Krugereffect)

  • 5W1H分析法

  • 5 Whys根因分析工具

  • PDCA Model

  • 复盘思维

  • 麦肯锡7步问题解决法

                  

Vol.5/   报名&费用            

课程费用:原价4999元,早鸟价特惠2980元,  仅限活动期间!        

戳此直接报名《算法体系课第3期》        :https://xiedaimala.com/short_links/193206

前20人送价值399元的《大厂面试手写代码合集》课程,还剩最后18个名额!!!        

咨询报名或需分期报名,可联系班主任小圆:xiedaimala03


      

Vol.6/   彩蛋福利                

算法班群的有趣瞬间~~

        

        

        

        

        

        

        

        

        

        

        

        

Vol.7/   常见问题                

一、 学习周期是多久?            

训练营的学习周期是3个月,老师会在3个月内让大家突击完成算法学习和练习。超出3个月后训练营期间录制的视频依旧保留可看(保留2年),但本期学习活动会停止。

           

二、 报名后可以退款吗?            

报名及开课前,可无条件申请退款,开课后1个月内,觉得课程不合适,可以申请退款,扣除已经学习的费用退余款。

     

三、参加完训练营一定能解决所有算法问题吗?            

独家整理和总结了大厂面试官的200道算法出题题库,基本涵盖绝大部分面试中可能会出现的算法问题,可以让你抓住重点,通过3个月时间通刷我们的题库,轻松应对大厂的算法面试。


四、算法中用的编程语言是什么?            

算法的核心是解题思路,编程语言并不重要,你会任何一种主流语言都不影响算法的学习。课程里涉及到现场写代码的部分用的是Java,如果没有Java语言基础,Java基础语法学习视频我们也提前放在算法刷题前面的前置课程里。同时课程会再提供JS版本的解题代码。

         

五、和自己刷算法题有什么区别?            

所有学算法的同学基本上都尝试过leetcode上算法刷题,成功者却少之又少。失败的最主要原因是半途而废。


(1)leetcode有数千个题目,很多题目是同质的,如果不会归纳总结,没有一个体系、重点的概念,每题都刷,就像一个人在无边无际的稻田里插秧,看不到终点没有目标,自然坚持不下去。

而算法班老师根据自己多年担任面试官和大厂高级岗位被面试经验,总结了这套大厂面试算法题库,只要把班级提供的题库和解题思路搞懂,可以应对各类算法面试。

算法班紧凑的任务安排和严格的要求,可以在90天刷完至少200道高频题。

(2)很多算法题虽小代码虽短,但题目背后的原理却很深很难。别人的答案(算法代码实现)是原理的体现,懂了原理很容易懂代码,但不懂原理很难知道别人为什么这么做。刷算法时会发现前面简单的刷起来很快,到中期即使是看别人的代码也很难看懂,刷题进度自然会停滞。

而算法班会深入题目背后,挖掘要考察的知识点和与其他的知识联系。讲思路会带领大家仔细分析每一道题目,梳理思路,总结模版与套路。我们不只在乎刷题的数量,更在乎刷题的质量,对于同一道题目,希望能给大家讲透,提供多种方法。

大厂老师带刷LeetCode,饥人谷算法系统班第3期的评论 (共 条)

分享到微博请遵守国家法律