完整的 Python 数据结构和算法课程
100 多个用于破解 FAANG 的 DSA 面试问题,并附有动画示例,可帮助您更深入地理解和更快地学习
讲师:Elshad Karimov
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
你将学到什么
- 学习、实现和使用不同的数据结构
- 学习、实施和使用不同的算法
- 通过掌握计算机科学基础知识成为更好的开发人员
- 学习通过困难的编程面试所需的一切
- 破解 100 多个问题并附有解释的编码面试
- 数据结构和算法的时间和空间复杂度
- 递归
- 大O
要求
- 基本的 Python 编程技能
描述
欢迎来到完整的 Python 数据结构和算法训练营,这是 互联网上最现代、最完整的 Python 数据结构和算法课程。
这是最全面的在线课程,时长超过 40 小时,可帮助您在编码面试中取得好成绩,并了解 Python 中的数据结构和算法。您将看到苹果、亚马逊、谷歌、微软等顶级科技公司的100 多个面试问题,以及如何面对面试,并配有全面的视觉讲解视频材料,让您离梦想的科技工作更近一步!
学习 Python 是改善职业前景的最快方法之一,因为它是最需要的技术技能之一!本课程将帮助您更好地理解 数据结构的每个细节以及如何用高级编程语言实现算法。
我们将通过引人入胜的视频教程逐步引导您,并教您成为一名成功的专业程序员所需的一切。
完成本课程后,您将能够:
学习基本的算法技术,如贪心算法、二分搜索、排序和动态编程,以解决编程挑战。
了解各种数据结构的优点和缺点,以便您可以为您的数据和应用程序选择最佳的数据结构
了解许多常用于对数据进行排序的算法,以便您的应用程序在对大型数据集进行排序时能够高效运行
了解如何应用图形和字符串算法来解决现实世界的挑战:在巨大的地图上寻找最短路径以及从数百万个片段中组装基因组。
为什么这门课程如此特别并且与任何其他在线资源不同?
本课程将带您从一开始就了解数据结构和算法的非常复杂和高级的主题!
在整个课程中,您将获得视频讲座,通过全面的视觉解释清楚地解释概念。
您还将看到苹果、亚马逊、谷歌和微软等顶级科技公司的面试问题。
我涵盖了您需要了解的有关技术面试流程的所有内容!
那么你是否有兴趣深入学习世界顶级编程语言
如果您有兴趣学习基本算法、数据结构和性能分析,这些构成了每位优秀程序员/设计师或软件架构师的核心基础技能,并且很高兴能在下一次技术面试中取得好成绩,这就是适合您的课程!
这就是您今天注册后得到的:
终身访问 40 多个小时的高清质量视频。没有包月。随时随地按照自己的节奏学习
每当您有疑问或遇到困难时,都会在课程问答中提供友好而快速的支持
30 天全额退款保证!
这门课程适合谁?
自学成才的程序员,具有 Python 基础知识,希望成为数据结构和算法专业人士,并开始面试技术职位!
以及正在学习计算机科学并希望获得有关数据结构和算法以及毕业后面试准备的补充材料的学生!
以及需要为即将到来的编码面试进行练习的专业程序员。
最后还有任何有兴趣了解更多有关数据结构和算法或技术面试过程的人!
本课程旨在帮助您实现职业目标。无论您是想深入了解数据结构和算法、增加收入潜力还是只是想要一份更自由的工作,这都是适合您的课程!
本课程涵盖的主题。
第 1 节 – 简介
- 什么是数据结构?
- 什么是算法?
- 为什么数据结构和算法很重要?
- 数据结构的类型
- 算法类型
第 2 节 – 递归
- 什么是递归?
- 为什么我们需要递归?
- 递归是如何工作的?
- 递归与迭代解决方案
- 何时使用/避免递归?
- 如何用三步写出递归?
- 如何使用递归查找斐波那契数列?
第 3 部分 – 破解递归面试问题
- 问题 1 – 数字之和
- 问题 2 – 电源
- 问题 3 – 最大公约数
- 问题 4 – 十进制转二进制
第 4 部分 – 挑战递归问题的奖励(练习)
- 力量
- 阶乘
- 数组的积
- 递归范围
- 谎言
- 撤销
- 是回文
- 一些递归
- 压扁
- 资本化优先
- 嵌套EvenSum
- 大写单词
- 字符串化数字
- 收集字符串
第 5 节 – 大 O 表示法
- 类比和时间复杂度
- 大 O、大 Theta 和大 Omega
- 时间复杂度示例
- 空间复杂度
- 删除常数和非主导项
- 加法与乘法
- 如何使用Big O测量代码?
- 如何找到递归调用的时间复杂度?
- 如何衡量多次调用的递归算法?
第 6 节 – Big O 面试十大问题(亚马逊、Facebook、苹果和微软)
- 乘积和总和
- 打印对
- 打印无序对
- 打印无序对 2 数组
- 打印无序对 2 阵列 100000 个单位
- 撤销
- O(N) 等价物
- 阶乘复杂度
- 斐波那契复杂度
- 2 的幂
第 7 节 – 数组
- 什么是数组?
- 数组类型
- 内存中的数组
- 创建一个数组
- 插入操作
- 遍历操作
- 访问数组的元素
- 在数组中搜索元素
- 从数组中删除一个元素
- 一维数组的时间和空间复杂度
- 一维数组练习
- 创建二维数组
- 插入 – 二维数组
- 访问二维数组的元素
- 遍历——二维数组
- 在二维数组中搜索元素
- 删除——二维数组
- 二维数组的时间和空间复杂度
- 何时使用/避免数组
第 8 节 – Python 列表
- 什么是列表?如何创建它?
- 访问/遍历列表
- 更新/插入列表
- 从列表中切片/
- 在列表中搜索元素
- 列表操作/函数
- 列表和字符串
- 常见列表陷阱以及避免它们的方法
- 列表与数组
- 列表的时间和空间复杂度
- 列出面试问题
第 9 部分 – 破解数组/列表面试问题(Amazon、Facebook、Apple 和 Microsoft)
- 问题 1 – 号码缺失
- 问题 2 – 配对
- 问题 3 – 在数组中查找一个数字
- 问题 4 – 两个 int 的最大乘积
- 问题 5 – 是独一无二的
- 问题 6 – 排列
- 问题 7 – 旋转矩阵
第 10 节 – 具有挑战性的数组/列表问题(练习)
- 中间功能
- 二维列表
- 最佳得分
- 缺失号码
- 重复号码
- 对
第 11 节 – 词典
- 什么是字典?
- 创建字典
- 记忆中的字典
- 在字典中插入/更新元素
- 遍历字典
- 在字典中搜索元素
- 从字典中删除/移除元素
- 字典方法
- 字典操作/内置函数
- 字典与列表
- 字典的时间和空间复杂度
- 字典面试题
第 12 节 – 元组
- 什么是元组?如何创建它?
- 内存中的元组/访问元组的元素
- 遍历元组
- 在元组中搜索元素
- 元组操作/函数
- 元组与列表
- 元组的时间和空间复杂度
- 元组问题
第 13 节 – 链接列表
- 什么是链表?
- 链表与数组
- 链表的类型
- 内存中的链表
- 单链表的创建
- 插入内存中的单链表
- 单链表算法中的插入
- 单链表中的插入方法
- 单链表的遍历
- 在单链表中搜索值
- 从单链表中删除节点
- 单链表的删除方法
- 删除整个单链表
- 单链表的时间和空间复杂度
第 14 节 – 循环单链表
- 循环单链表的创建
- 循环单链表中的插入
- 循环单链表的插入算法
- 循环单链表中的插入方法
- 循环单链表的遍历
- 在循环单链表中搜索节点
- 从循环单链表中删除节点
- 循环单链表的删除算法
- 循环单链表中的方法
- 删除整个循环单链表
- 循环单链表的时间和空间复杂度
第 15 节 – 双向链表
- 双向链表的创建
- 双向链表中的插入
- 双链表的插入算法
- 双链表的插入方法
- 双链表的遍历
- 双链表的反向遍历
- 在双向链表中搜索节点
- 删除双向链表中的节点
- 双链表的删除算法
- 双链表的删除方法
- 删除整个双向链表
- 双链表的时间和空间复杂度
第 16 节 – 循环双向链表
- 循环双向链表的创建
- 循环双向链表中的插入
- 循环双向链表的插入算法
- 循环双向链表中的插入方法
- 循环双向链表的遍历
- 循环双向链表的反向遍历
- 在循环双向链表中搜索节点
- 从循环双向链表中删除节点
- 循环双向链表的删除算法
- 循环双向链表的删除方法
- 整个循环双向链表
- 循环双向链表的时间和空间复杂度
- 链表与数组的时间复杂度
第 17 节 – 破解链表面试问题(Amazon、Facebook、Apple 和 Microsoft)
- 链表类
- 问题 1 – 删除重复项
- 问题 2 – 返回第 K 个到最后一个
- 问题 3 – 分区
- 问题 4 – 链表求和
- 问题 5 – 交叉口
第 18 节 – 堆栈
- 什么是堆栈?
- 堆栈操作
- 使用List创建堆栈,没有大小限制
- 使用列表对堆栈进行操作(push、pop、peek、isEmpty、)
- 创建有限制的堆栈(pop、push、peek、isFull、isEmpty、)
- 使用链表创建堆栈
- 使用链表对堆栈进行操作(pop、push、peek、isEmpty、)
- 使用链表的堆栈的时间和空间复杂度
- 何时使用/避免堆栈
- 堆栈测验
第 19 节 – 队列
- 什么是队列?
- 使用 Python List 的队列 – 无大小限制
- 使用 Python List 的队列 – 无大小限制、操作(入队、出队、查看)
- 循环队列 – Python 列表
- 循环队列 – Python 列表、操作(入队、出队、查看等)
- 队列 – 链表
- 队列 – 链表、操作(创建、入队)
- 队列 – 链表、操作(Dequeue()、isEmpty、Peek)
- 使用链表的队列的时间和空间复杂度
- 列表与链接列表的实现
- 收藏模块
- 队列模块
- 多处理模块
第 20 节 – 破解堆栈和队列面试问题(Amazon、Facebook、Apple、Microsoft)
- 问题 1 – 三合一
- 问题 2 – 堆栈最小值
- 问题 3 – 一堆盘子
- 问题 4 – 通过堆栈排队
- 问题 5 – 动物收容所
第 21 节 – 树/二叉树
- 什么是树?
- 为什么是树?
- 树术语
- 如何在Python中创建一个基本的树?
- 二叉树
- 二叉树的类型
- 二叉树表示
- 创建二叉树(链表)
- 前序遍历二叉树(链表)
- 中序遍历二叉树(链表)
- 后序遍历二叉树(链表)
- LevelOrder遍历二叉树(链表)
- 在二叉树(链表)中搜索节点
- 在二叉树(链表)中插入节点
- 从二叉树(链表)中删除节点
- 删除整个二叉树(链表)
- 创建二叉树(Python 列表)
- 插入值二叉树(Python 列表)
- 在二叉树(Python 列表)中搜索节点
- 前序遍历二叉树(Python List)
- 中序遍历二叉树(Python列表)
- 后序遍历二叉树(Python List)
- 层序遍历二叉树(Python列表)
- 从二叉树(Python 列表)中删除节点
- 整个二叉树(Python 列表)
- 链表与 Python 列表二叉树
第 22 节 – 二叉搜索树
- 什么是二叉搜索树?为什么我们需要它?
- 创建二叉搜索树
- 向 BST 插入节点
- 遍历 BST
- 在 BST 中搜索
- 从 BST 中删除节点
- 删除整个 BST
- BST 的时间和空间复杂度
第 23 节 – AVL 树
- 什么是 AVL 树?
- 为什么选择 AVL 树?
- AVL 树的常见操作
- 在AVL(左左条件)中插入节点
- 在AVL中插入节点(左右条件)
- 在AVL(右右条件)中插入节点
- 在AVL(右左条件)中插入节点
- 在AVL中插入节点(全部一起)
- 在AVL中插入节点(方法)
- 从 AVL 中删除节点(LL、LR、RR、RL)
- 从AVL中删除一个节点(全部一起)
- 从AVL中删除节点(方法)
- 删除整个 AVL
- AVL树的时间和空间复杂度
第 24 节 – 二叉堆
- 什么是二叉堆?为什么我们需要它?
- 二叉堆上的常见操作(Creation、Peek、sizeofheap)
- 在二叉堆中插入一个节点
- 从二叉堆中提取节点
- 删除整个二进制堆
- 二叉堆的时间和空间复杂度
第 25 节 – 特里树
- 什么是特里树?为什么我们需要它?
- Trie 上的常见操作(创建)
- 在 Trie 中插入字符串
- 在 Trie 中搜索字符串
- 从 Trie 中删除一个字符串
- Trie的实际使用
第 26 节 – 散列
- 什么是哈希?为什么我们需要它?
- 哈希术语
- 哈希函数
- 碰撞解决技术的类型
- 哈希表已满
- 解析技术的优缺点
- 哈希的实际应用
- 散列与其他数据结构
第 27 节 – 排序算法
- 什么是排序?
- 排序类型
- 排序术语
- 冒泡排序
- 选择排序
- 插入排序
- 桶排序
- 归并排序
- 快速排序
- 堆排序
- 排序算法比较
第 28 节 – 搜索算法
- 搜索算法简介
- 线性搜索
- Python 中的线性搜索
- 二分查找
- Python 中的二分查找
- 二分查找的时间复杂度
第 29 节 – 图算法
- 什么是图表?为什么要绘制图表?
- 图术语
- 图的类型
- 图形表示
- 使用 Python 创建图表
- 图的遍历——BFS
- Python 中的 BFS 遍历
- 图遍历-DFS
- Python中的DFS遍历
- BFS 遍历与 DFS 遍历
- 拓扑排序
- 拓扑排序算法
- Python 中的拓扑排序
- 单源最短路径问题(SSSPP)
- 单源最短路径问题 (SSSPP) 的 BFS
- Python 中单源最短路径问题 (SSSPP) 的 BFS
- 为什么 BFS 不适用于加权图?
- 为什么 DFS 不适用于 SSSP?
- SSSP 的 Dijkstra 算法
- Python 中的 Dijkstra 算法
- 带负循环的 Dijkstra 算法
- 贝尔曼福特算法
- 带负循环的贝尔曼福特算法
- 贝尔曼·福特为什么要运行 V-1 次?
- 贝尔曼·福特的Python语言
- BFS vs Dijkstra vs 贝尔曼·福特
- 所有对最短路径问题
- 所有对最短路径的试运行
- 弗洛伊德·沃歇尔算法
- 为什么是弗洛伊德·沃歇尔?
- 弗洛伊德·沃歇尔(Floyd Warshall)具有负循环,
- 弗洛伊德·沃歇尔 (Floyd Warshall) 使用 Python,
- BFS vs Dijkstra vs Bellman Ford vs Floyd Warshall,
- 最小生成树,
- 不相交集,
- Python 中的不相交集,
- 克鲁斯卡尔算法,
- Python 中的克鲁斯卡尔算法,
- 普里姆算法,
- Python 中的 Prim 算法,
- 普里姆 vs 克鲁斯卡尔
第 30 节 – 贪婪算法
- 什么是贪心算法?
- 众所周知的贪心算法
- 活动选择问题
- Python 中的活动选择问题
- 硬币找零问题
- Python 中的硬币找零问题
- 分数背包问题
- Python 中的分数背包问题
第 31 节 – 分而治之算法
- 什么是分而治之算法?
- 常见的分而治之算法
- 如何使用分而治之的方法解决斐波那契数列?
- 数量因素
- Python 中的数字因子
- 入室抢劫者
- Python 中的入室抢劫问题
- 将一个字符串转换为另一个字符串
- 在 Python 中将一个字符串转换为另一个字符串
- 零一背包问题
- Python中的零一背包问题
- 最长公共序列问题
- Python 中的最长公共子序列
- 最长回文子序列问题
- Python 中的最长回文子序列
- 达到最后一个单元格问题的最低成本
- 使用 Python 到达 2D 数组中最后一个单元格的最低成本
- 以给定成本到达最后一个单元格的方式数量
- Python 中以给定成本到达最后一个单元格的方法数
第32节-动态规划
- 什么是动态规划? (重叠属性)
- DC的名字从何而来?
- 自上而下的记忆化
- 自下而上的制表
- 自上而下与自下而上
- 归并排序是动态规划吗?
- 使用动态规划的数因数问题
- 数字因子:自上而下和自下而上
- 使用动态规划的入室抢劫问题
- 入室盗窃:自上而下和自下而上
- 使用动态编程将一个字符串转换为另一个字符串
- 使用自底向上转换字符串
- 使用动态规划的零一背包
- 零一背包 – 自上而下
- 零一背包-自下而上
第 33 节 – 具有挑战性的动态规划问题
- 最长重复子序列长度问题
- 最长公共子序列长度问题
- 最长公共子序列问题
- 差异实用程序
- 最短公共子序列问题
- 最长回文子序列的长度
- 子集和问题
- 鸡蛋掉落拼图
- 最大长度链对
第34节-解决问题的秘诀
- 介绍
- 第 1 步 – 了解问题
- 第 2 步 – 示例
- 第三步——分解
- 第 4 步 – 求解或简化
- 第 5 步 – 回顾和重构
本课程适合谁:
- 任何有兴趣了解更多有关数据结构和算法或技术面试过程的人!
- 自学成才的程序员,具有 Python 基础知识,想要成为数据结构和算法专业人士,并开始面试技术职位!
- 目前正在学习计算机科学的学生,需要数据结构和算法方面的补充材料以及毕业后面试准备!
- 需要为即将到来的编码面试进行练习的专业程序员。
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。