Content
24 Lessons • 0 Quizzes • 0 Challenges
✨入门指南
- 1
课程概述
- 2
谁应该参加此课程?
Netflix
- 1
项目描述:Netflix
- 2
功能一:分组相似标题
- 3
功能 #2:获取热门电影
- 4
特性 #3:查找中位数年龄
- 5
功能四:流行度分析
- 6
功能五:获取最近观看过的影片
- 7
功能六:获取最常观看的影片
- 8
功能 #7:浏览评分
- 9
功能 #8:验证用户会话
- 10
功能 #9:某一类型电影的组合
- 11
功能 #10:计算缓冲事件的中位数
- 12
功能 #11:生成电影观看顺序
- 13
功能 #12:保持“继续观看”进度条
- 14
我们学到了什么?
- 15
动手实践:分组字母异位词
- 16
DIY:合并 K 个已排序的列表
- 17
DIY:从数据流中找出中位数
- 18
DIY:单调数组
- 19
DIY:LRU 缓存
- 20
DIY:LFU 缓存
- 21
DIY:最小栈
- 22
DIY:验证栈序列
- 23
DIY:电话号码的字母组合
- 24
DIY:滑动窗口中位数
- 25
DIY:排列
- 26
DIY:最大频率栈
Facebook
- 1
项目描述:Facebook
- 2
功能一:好友圈
- 3
功能二:复制连接
- 4
功能三:查找故事ID
- 5
功能四:请求限制器
- 6
特性 #5:标记词
- 7
特性 #6:合并相似消息
- 8
功能 #7:分割帖子
- 9
特性 #8:重叠主题
- 10
特性 #9:重建决策树
- 11
我们学到了什么?
- 12
DIY:岛屿数量
- 13
DIY:省份数量
- 14
DIY:无向图中的连通分量数量
- 15
DIY:克隆无向图
- 16
DIY:在旋转排序数组中搜索
- 17
DIY:日志速率限制器
- 18
DIY:富有表现力的词汇
- 19
DIY:分组移位字符串
- 20
DIY:分割巧克力
- 21
DIY:最小窗口子串
- 22
动手实践:根据前序遍历和中序遍历构造二叉树
搜索引擎
- 1
搜索引擎项目描述
- 2
功能一:存储和获取单词
- 3
功能二:设计搜索自动补全系统
- 4
特性三:添加空格以形成单词
- 5
功能4:在添加空格后建议可能的查询
- 6
功能五:计算搜索排名因素
- 7
功能六:重新排序搜索结果
- 8
功能 #7:查找搜索时间
- 9
特性 #8:分布式进程协调器
- 10
特性 #9:查找最少服务器
- 11
我们学到了什么?
- 12
DIY:实现字典树
- 13
DIY:建议相关句子
- 14
DIY:单词拆分
- 15
DIY:单词拆分 II
- 16
自定义:除自身外数组元素的乘积
- 17
DIY:重新排列字符串
- 18
DIY:函数的独占时间
- 19
DIY:快照数组
- 20
DIY:硬币找零
- 21
DIY:零钱兑换 2
- 22
DIY:组合总和
谷歌日历
- 1
项目描述:Google 日历
- 2
功能一:寻找会议室
- 3
功能二:显示繁忙日程
- 4
特性 #3:判断会议是否可行
- 5
功能四:安排新会议
- 6
功能五:查找共同忙碌时间(concept)
- 7
特性 #6:寻找连续的两天
- 8
功能 #7:最长繁忙时段
- 9
我们学到了什么?
- 10
DIY:查找区间集合
- 11
DIY:合并区间
- 12
DIY:我的日历
- 13
DIY:插入区间
- 14
DIY:区间列表交集
- 15
DIY:员工空闲时间
- 16
动手实践:寻找两个不重叠的子数组,每个子数组的和都等于目标值
- 17
DIY:最长连续序列
股票爬虫
- 1
股票爬虫项目描述
- 2
特性1:遍历DOM树
- 3
功能二:查找股票数据
- 4
特性 #3:遍历 DOM 树 II
- 5
功能四:最大利润
- 6
我们学到了什么?
- 7
DIY:二叉树层序遍历
- 8
自定义:二叉树的最低公共祖先
- 9
DIY:二叉树 III 的最低公共祖先
- 10
DIY:填充每个节点的下一个右侧节点指针
- 11
DIY:填充每个节点的下一个右侧节点指针 II
- 12
动手实践:最大子数组
- 13
自定义:最佳买卖股票时机
UBER
- 1
项目描述:Uber(导学)
- 2
功能1:选择最近的司机
- 3
特性 #2:路径代价
- 4
功能三:选择最优路径
- 5
功能四:费用转英文单词
- 6
功能五:优步拼车
- 7
特性 #6:最长路径
- 8
功能 #7:最高排名
- 9
特性 #8:最优路径
- 10
我们学到了什么?
- 11
自定义:到原点的 K 个最近点
- 12
DIY:接雨水
- 13
DIY:除法求值
- 14
DIY:整数转英文单词
- 15
DIY:按权重随机选择
- 16
DIY:二叉树的直径
- 17
自定义:数组中的第K个最大元素
- 18
DIY:最小路径和
亚马逊
- 1
项目描述(亚马逊)
- 2
功能一:推荐免运费商品
- 3
功能二:推荐商品参与特别优惠
- 4
功能三:产品升级销售
- 5
功能四:复制产品数据
- 6
功能五:订单处理里程碑
- 7
功能六:商品常被一起查看
- 8
特性 #7:优化配送成本
- 9
功能 #8:合并建议
- 10
功能 #9:价格区间内的商品
- 11
功能 #10:计算购物车商品的总费用
- 12
特性 #11:广告投放
- 13
功能 #12:仓库与配送点
- 14
功能 #13:基于时间的商品价格存储
- 15
功能 #14:查找相似产品
- 16
我们学到了什么?
- 17
自定义:两数之和
- 18
动手实践:三数之和
- 19
DIY:最接近的三数之和
- 20
自定义:在 O(1) 时间内实现插入、删除和随机获取
- 21
自定义:插入、删除、随机获取元素 O(1) - 允许重复元素
- 22
DIY:复制带有随机指针的链表
- 23
自定义:在有序数组中查找元素的首个和末个位置
- 24
DIY:在字符串中找出所有变位词
- 25
DIY:随机索引选择
- 26
DIY:连续子数组和
- 27
DIY:账户合并
- 28
DIY:二叉搜索树的范围和
- 29
DIY:基本计算器 II
- 30
DIY:基础计算器 III
- 31
DIY:读取N个字符 — 给定Read4 II — 多次调用
- 32
DIY:墙壁与门
- 33
DIY:基于时间的键值存储
- 34
DIY:两个数组的交集
Zoom
- 1
项目描述:Zoom
- 2
功能一:显示会议等候室
- 3
功能二:序列化与反序列化参与者数据
- 4
功能三:会议活动
- 5
功能四:验证已排序的参与者数据
- 6
功能五:移动设备自动旋转
- 7
我们学到了什么?
- 8
DIY:二叉搜索树迭代器
- 9
DIY:序列化和反序列化二叉树
- 10
DIY:跳跃游戏 IV
- 11
DIY:验证二叉搜索树
- 12
动手实践:旋转图像
查重检测
- 1
项目描述:抄袭检测器
- 2
特性 #1:可能的匹配
- 3
功能二:返回匹配结果
- 4
我们学到了什么?
- 5
DIY:匹配子序列的个数
- 6
DIY:最小窗口子序列
网络
- 1
网络项目描述
- 2
特性 #1:总时间
- 3
功能二:TTL 过期
- 4
特性 #3:最少跳跃次数
- 5
功能四:最大路由器数量
- 6
功能五:更新VLAN ID
- 7
特性 #6:传输错误
- 8
功能七:通过网络分割文件
- 9
功能 #8:最大时钟偏移
- 10
功能 #9:更新配置
- 11
特性 #10:最小变异
- 12
特性 #11:加权指数退避
- 13
功能 #12:信号峰值强度
- 14
我们学到了什么?
- 15
DIY:通知所有员工所需的时间
- 16
DIY:二叉树中所有距离为 K 的节点
- 17
DIY:跳跃游戏 II
- 18
DIY:矩阵中的最长递增路径
- 19
DIY:洪水填充
- 20
DIY:验证回文字符串 II
- 21
DIY:划分标签
- 22
DIY:节点与其祖先之间的最大差值
- 23
DIY:腐烂的橘子
- 24
DIY:最长子数组,其绝对差小于等于限制
- 25
自定义:两数相加
- 26
自定义:两数相加 II
- 27
动手实践:寻找峰值元素
网络安全
- 1
网络安全项目描述
- 2
功能 #1:验证数据包结构
- 3
功能二:验证消息完整性
- 4
功能三:查找字典
- 5
功能四:解码消息的多种方法
- 6
特性 #5:符合条件的候选人
- 7
我们学到了什么?
- 8
DIY:UTF-8 校验
- 9
DIY:验证外星字典
- 10
DIY:外星人字典
- 11
DIY:解码方法
- 12
DIY:找到 K 个最接近的元素
操作系统
- 1
操作系统项目描述
- 2
功能一:分配空间
- 3
功能二:恢复进程
- 4
特性三:调度进程
- 5
功能四:压缩文件
- 6
功能五:恢复文件
- 7
功能六:文件管理系统
- 8
功能七:序列化和反序列化文件系统
- 9
特性 #8:压缩文件 II
- 10
功能 #9:文件搜索
- 11
功能 #10:解码消息
- 12
功能 #11:目录迭代器
- 13
特性 #12:优先级验证
- 14
功能 #13:反转命令
- 15
功能 #14:释放进程锁
- 16
特性 #15:按优先级重建队列
- 17
我们学到了什么?
- 18
DIY:和为 K 的子数组
- 19
动手实践:有序数组中的缺失元素
- 20
DIY:课程安排
- 21
DIY:课程安排 II
- 22
DIY:序列重构
- 23
DIY:连接词
- 24
DIY:最小移除以使括号有效
- 25
DIY:设计添加和搜索单词的数据结构
- 26
DIY:序列化和反序列化 N 叉树
- 27
DIY:字符串压缩
- 28
DIY:正则表达式匹配
- 29
DIY:通配符匹配
- 30
自定义:24点游戏
- 31
DIY:扁平化嵌套列表迭代器
- 32
动手实践:青蛙跳
- 33
DIY:根据身高重建队列
- 34
DIY:反转字符串中的单词
- 35
自定义:已排序数组中的单一元素
语言编译器
- 1
语言编译器项目描述
- 2
功能一:移除注释
- 3
功能二:计算算术表达式
- 4
特性三:循环展开
- 5
特性 #4:通过替换进行优化
- 6
功能五:编译步骤失败
- 7
功能6:最常见标记
- 8
特性 #7:移动设备上的幂运算
- 9
功能 #8:省电模式下的除法(concept)
- 10
功能 #9:验证程序括号
- 11
我们学到了什么?
- 12
自定义:统计评论中的某个单词出现次数
- 13
DIY:简易计算器
- 14
DIY:解码字符串
- 15
DIY:在字符串中查找并替换
- 16
DIY:第一个错误版本
- 17
DIY:嵌套列表权重求和
- 18
DIY:最频繁出现的单词
- 19
自定义:计算 x 的 n 次方
- 20
自定义:两数相除
- 21
DIY:有效的括号
- 22
DIY:有效括号字符串
Boggle
- 1
Boggle 项目描述 Boggle 是一款经典的单词拼写游戏,玩家需要在由随机字母组成的 4x4 方格中寻找尽可能多的合法单词。游戏规则如下: - 每个方格包含一个大写字母。 - 玩家通过连接相邻的字母(包括水平、垂直和对角线方向)来组成单词。 - 单词必须至少包含三个字母。 - 同一字母不能在同一个单词中重复使用。 - 所有找到的单词必须存在于给定的字典中。 你的任务是实现一个 Boggle 游戏的解决方案,包括以下功能: 1. 初始化一个 4x4 的字母网格,使用随机字母填充。 2. 提供一个字典文件(例如:words.txt),其中包含所有合法的单词。 3. 实现一个搜索算法,从每个可能的起始位置出发,使用深度优先搜索(DFS)遍历所有可能的路径,找出所有有效的单词。 4. 去除重复的单词,并按长度或字母顺序排序输出结果。 5. 统计并显示找到的单词数量以及总得分(根据单词长度计算得分,例如:3 字词得 1 分,4 字词得 1 分,5 字词得 2 分,6 字词得 3 分,7 字词得 5 分,8 字词及以上得 11 分)。 你可以选择用 Python、Java 或其他编程语言实现。建议使用递归 DFS 来探索所有可能的路径,并利用前缀树(Trie)优化字典查询效率。 示例输入: - 字母网格: ``` A B C D E F G H I J K L M N O P ``` - 字典文件内容(部分): ``` ABC BEG FJK MOO ``` 示例输出: - 找到的单词:ABC, BEG, FJK, MOO - 总共找到 4 个单词 - 总得分:1 + 1 + 2 + 1 = 5 分 提示: - 使用集合(set)存储已找到的单词以避免重复。 - 在 DFS 过程中记录已访问的位置,防止重复使用同一格子。 - 可以预先构建一个 Trie 数据结构来加速单词前缀匹配。 完成此项目将帮助你深入理解回溯算法、图遍历以及高效数据结构的应用。
- 2
功能一:在宝格棋盘中搜索单个单词
- 3
功能二:在宝格棋盘中搜索最多的单词数量
- 4
我们学到了什么?
- 5
DIY:单词搜索 I
- 6
DIY:单词搜索 II
拼字游戏 2.0
- 1
项目描述:拼字游戏(Scrabble)
- 2
特性 #1:最少移动次数
- 3
特性 #2:可能的结果
- 4
我们学到了什么?
- 5
DIY:单词接龙 I
- 6
DIY:单词接龙 II
游戏
- 1
游戏项目描述
- 2
功能一:顺子手牌
- 3
功能二:从卡片中获得的最大分数(concept)
- 4
功能三:气球爆破
- 5
我们学到了什么?
- 6
DIY:将数组划分为 K 个连续数字的集合
- 7
DIY:从数组的任一端获取最大和
- 8
DIY:移除字符串中的所有相邻重复字符
- 9
DIY:删除字符串中的所有相邻重复项 II
股票
- 1
股票项目描述
- 2
功能1:验证价格
- 3
特性 #2:结算期
- 4
特性 #3:目标达成
- 5
功能四:里程碑达成
- 6
功能五:顶级券商
- 7
功能六:分配交易
- 8
功能七:处理交易
- 9
功能 #8:查找区间
- 10
我们学到了什么?
- 11
DIY:有效数字
- 12
DIY:任务调度器
- 13
DIY:将数组拆分为连续子序列
- 14
动手实践:在二维矩阵中搜索
- 15
自定义:前 K 个高频元素
- 16
自定义:每 k 个一组反转链表
- 17
DIY:反转链表 II
- 18
DIY:字符串转整数(atoi)
- 19
DIY:每日温度
计算生物学
- 1
计算生物学项目描述
- 2
特性 #1:突变DNA
- 3
功能二:病毒检测
- 4
功能三:定位蛋白质
- 5
功能四:识别蛋白质
- 6
特性五:变异病毒
- 7
功能六:识别物种
- 8
功能7:检测蛋白质
- 9
功能 #8:DNA 样本之间的相似性度量
- 10
特性 #9:第 K 个缺失的基因
- 11
我们学到了什么?
- 12
DIY:字符串转换为另一个字符串
- 13
DIY:最多包含 K 个不同字符的最长子串
- 14
自定义:最长回文子串
- 15
DIY:验证回文串
- 16
动手实践:下一个排列
- 17
DIY:无重复字符的最长子串
- 18
DIY:回文排列
- 19
DIY:回文子串
- 20
DIY:编辑距离
- 21
自定义:第K个缺失的正整数
移动运营商(AT&T)
- 1
项目描述:移动运营商
- 2
功能一:确定位置
- 3
特性 #2:低覆盖率区域
- 4
功能三:升级站点
- 5
功能四:查询峰值用户
- 6
特性 #7:最大连续区域
- 7
特性 #5:最密集部署
- 8
特性 #6:最大用户数
- 9
功能 #8:最大信号强度
- 10
我们学到了什么?
- 11
自定义:搜索二维矩阵 II
- 12
动手实践:柱状图中的最大矩形
- 13
DIY:最大矩形
- 14
DIY:打开锁
- 15
DIY:二维范围求和查询 — 不可变
- 16
DIY:最小面积矩形
- 17
DIY:滑动窗口最大值
- 18
DIY:岛屿的最大面积
- 19
DIY:最大连续1的个数 III
- 20
DIY:最短桥
Twitter
- 1
项目描述:推特(Twitter)
- 2
功能 #1:添加点赞
- 3
功能二:合并推文至推特动态
- 4
功能三:识别互动高峰期
- 5
功能四:将用户分为两组
- 6
功能五:绘制热门推文的全球分布图
- 7
功能六:入站推文预测器
- 8
功能7:热门话题标签
- 9
我们学到了什么?
- 10
DIY:二进制加法
- 11
DIY:字符串相乘
- 12
动手实践:合并已排序的数组
- 13
自定义:三个非重叠数组的最大和
- 14
动手实践:图是否为二分图?
- 15
DIY:天际线问题
- 16
DIY:从数据流中计算移动平均值
- 17
自定义:查找系统中的重复文件
树
- 1
翻转二叉树
- 2
翻转等价二叉树
- 3
二叉树中的最大路径和
- 4
二叉树的锯齿形层序遍历
- 5
二叉树的右视图
- 6
二叉树的垂直遍历
- 7
二叉树的边界
- 8
将二叉树展开为链表
杂项
- 1
最少骑士移动
- 2
稀疏矩阵乘法
- 3
设计一个内存文件系统
- 4
螺旋矩阵
- 5
设计井字棋
- 6
迷宫
- 7
复原IP地址
- 8
重新安排行程
- 9
文本对齐
- 10
加油站
- 11
强密码检查器
- 12
数独求解器
- 13
太平洋大西洋水流
- 14
时钟上时针与分针之间的夹角
结论
- 1
接下来该去哪里?
Certificate of Completion
Showcase your accomplishment by sharing your certificate of completion.
Course Author:Anonymous User