Content
24 Lessons • 0 Quizzes • 0 Challenges
✨入门指南
- 1
课程概述
- 2
谁应该参加此课程?
Netflix
- 1
项目描述:Netflix
- 2
特性1:分组相似标题
- 3
功能二:获取热门电影
- 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
动手实践:岛屿数量
- 13
动手实践:省份数量
- 14
动手实践:无向图中的连通分量数量
- 15
DIY:克隆有向图
- 16
自定义:在旋转排序数组中搜索
- 17
DIY:日志记录速率限制器
- 18
DIY:富有表现力的词汇
- 19
DIY:分组移位字符串
- 20
DIY:分巧克力
- 21
DIY:最小窗口子串
- 22
动手实践:根据前序遍历和中序遍历构造二叉树
搜索引擎
- 1
搜索引擎项目描述
- 2
功能一:存储和获取单词
- 3
功能二:设计搜索自动补全系统
- 4
特性三:添加空格以形成单词
- 5
功能4:添加空格后建议可能的查询
- 6
功能五:计算搜索排名因素
- 7
特性 #6:重新组织搜索结果
- 8
特性 #7:查找搜索时间
- 9
特性 #8:分布式进程协调器
- 10
特性 #9:查找最小服务器数量
- 11
我们学到了什么?
- 12
DIY:实现字典树
- 13
DIY:建议相关句子
- 14
DIY:单词拆分
- 15
DIY:单词拆分 II
- 16
DIY:除自身外数组所有元素的乘积
- 17
DIY:重新排列字符串
- 18
自定义:函数的独占时间
- 19
DIY:快照数组
- 20
DIY:硬币找零
- 21
自定义:零钱兑换 2
- 22
DIY:组合总和
谷歌日历
- 1
项目描述:Google 日历
- 2
功能一:寻找会议室
- 3
功能二:显示繁忙日程
- 4
特性 #3:判断会议是否可行
- 5
功能四:安排新会议
- 6
功能五:查找共同忙碌时段(concept)
- 7
特性 #6:寻找连续的两天
- 8
功能 #7:最长繁忙时段
- 9
我们学到了什么?
- 10
DIY:查找区间集合
- 11
DIY:合并区间
- 12
DIY:我的日历
- 13
自定义:插入区间
- 14
DIY:区间列表交集
- 15
DIY:员工空闲时间
- 16
动手实践:寻找两个不重叠的子数组,每个子数组的和都等于目标值
- 17
DIY:最长连续序列
股票爬虫
- 1
股票爬虫项目描述
- 2
功能一:遍历DOM树
- 3
功能二:查找股票数据
- 4
特性 #3:遍历 DOM 树 II
- 5
功能四:最大利润
- 6
我们学到了什么?
- 7
自定义:二叉树层序遍历
- 8
自定义:二叉树的最低公共祖先
- 9
DIY:二叉树 III 的最低公共祖先
- 10
DIY:填充每个节点的下一个右侧节点指针
- 11
DIY:填充每个节点的下一个右侧节点指针 II
- 12
动手实践:最大子数组
- 13
自定义:最佳买卖股票时机
UBER
- 1
项目描述:Uber
- 2
功能一:选择最近的司机
- 3
特性 #2:路径代价
- 4
功能三:规划并选择路径
- 5
功能四:金额大写
- 6
功能五:优步拼车
- 7
特性 #6:最长路径
- 8
功能 #7:最高排名
- 9
特性 #8:最优路径
- 10
我们学到了什么?
- 11
自定义:到原点的 K 个最近点
- 12
DIY:接雨水
- 13
DIY:评估除法
- 14
DIY:整数转英文单词
- 15
DIY:按权重随机选择
- 16
自定义:二叉树的直径
- 17
自定义:数组中的第K个最大元素
- 18
DIY:最小路径和
亚马逊
- 1
项目描述(亚马逊)
- 2
功能一:推荐免运费商品
- 3
功能二:推荐商品参与特别优惠
- 4
功能三:产品升级销售
- 5
功能四:复制产品数据
- 6
功能五:订单处理里程碑
- 7
功能6:商品经常一起浏览
- 8
功能 #7:优化配送成本(concept)
- 9
功能 #8:合并建议
- 10
功能 #9:价格区间内的商品
- 11
功能 #10:计算购物车商品的总费用
- 12
功能 #11:广告投放
- 13
功能 #12:仓库与配送点
- 14
功能 #13:基于时间的商品价格存储
- 15
功能 #14:查找相似产品
- 16
我们学到了什么?
- 17
自定义:两数之和
- 18
动手实践:三数之和
- 19
DIY:最接近的三数之和
- 20
自定义:在 O(1) 时间内实现插入、删除和随机获取
- 21
DIY:在 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
自定义:基于时间的键值存储
- 34
DIY:两个数组的交集
Zoom:视频会议功能设计
- 1
项目描述:Zoom
- 2
功能一:显示会议等候室
- 3
功能二:序列化与反序列化参与者数据
- 4
功能三:会议活动
- 5
功能 #4:验证已排序的参与者数据
- 6
功能五:移动设备自动旋转
- 7
我们学到了什么?
- 8
DIY:二叉搜索树迭代器
- 9
DIY:序列化和反序列化二叉树
- 10
DIY:跳跃游戏 IV
- 11
DIY:验证二叉搜索树
- 12
DIY:旋转图像(concept)
查重检测
- 1
项目描述:抄袭检测器
- 2
特性 #1:可能的匹配
- 3
特性 #2:返回匹配结果
- 4
我们学到了什么?
- 5
DIY:匹配的子序列数量
- 6
DIY:最小窗口子序列
网络
- 1
网络项目描述
- 2
特性 #1:总时间
- 3
功能二:TTL 过期
- 4
特性 #3:最少跳跃次数
- 5
功能四:最大路由器数量
- 6
功能 #5:更新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
DIY:寻找峰值元素
网络安全
- 1
网络安全项目描述
- 2
特性 #1:验证数据包结构
- 3
功能二:验证消息完整性
- 4
功能三:查找字典
- 5
功能四:解码消息的多种方法
- 6
功能五:符合条件的候选人
- 7
我们学到了什么?
- 8
DIY:UTF-8 校验
- 9
DIY:验证外星字典
- 10
DIY:外星人字典
- 11
DIY:解码方法
- 12
DIY:找到 K 个最接近的元素
操作系统
- 1
操作系统项目描述
- 2
功能一:分配空间
- 3
功能二:恢复进程
- 4
特性三:调度进程
- 5
功能四:压缩文件
- 6
功能五:恢复文件
- 7
功能六:文件管理系统
- 8
功能 #7:序列化和反序列化文件系统
- 9
特性 #8:压缩文件 II
- 10
功能 #9:文件搜索
- 11
功能 #10:解码消息
- 12
特性 #11:目录迭代器
- 13
特性 #12:优先级验证
- 14
功能 #13:反转命令
- 15
功能 #14:释放进程锁
- 16
特性 #15:按优先级重建队列
- 17
我们学到了什么?
- 18
DIY:和为 K 的子数组
- 19
DIY:有序数组中的缺失元素
- 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
功能 #1:删除注释
- 3
功能二:计算算术表达式
- 4
特性 #3:循环展开
- 5
特性 #4:通过替换进行优化
- 6
功能五:编译步骤失败
- 7
功能6:最常见标记
- 8
特性 #7:移动设备上的幂运算
- 9
功能 #8:在省电模式下进行分割
- 10
功能 #9:验证程序中的括号
- 11
我们学到了什么?
- 12
动手实践:统计注释中的单词出现次数
- 13
DIY:简易计算器
- 14
DIY:解码字符串
- 15
DIY:在字符串中查找并替换
- 16
动手实践:第一个错误版本
- 17
DIY:嵌套列表权重求和
- 18
DIY:出现次数最多的单词
- 19
自定义:计算 x 的 n 次方
- 20
自定义:两数相除
- 21
DIY:有效的括号
- 22
DIY:有效括号字符串
Boggle
- 1
Boggle 项目描述 Boggle 是一款经典的单词拼写游戏,玩家需要在由随机字母组成的 4x4 方格中寻找尽可能多的合法单词。游戏规则如下: - 每个方格包含一个大写字母。 - 玩家通过连接相邻的字母(包括水平、垂直和对角线方向)来组成单词。 - 单词长度至少为 3 个字母。 - 同一字母不能在同一个单词中重复使用。 - 所有找到的单词必须存在于给定的字典中。 你的任务是实现一个 Boggle 游戏求解器,能够: - 接收一个 4x4 的字母网格。 - 基于标准字典查找所有可能的有效单词。 - 返回按字母顺序排列的唯一有效单词列表。 你可以使用任何编程语言实现此功能。建议使用深度优先搜索(DFS)算法结合回溯技术来遍历所有可能的路径,并利用前缀树(Trie)数据结构高效地判断单词是否存在于字典中。 示例输入: ``` A B C D E F G H I J K L M N O P ``` 示例输出(假设字典包含 "ABC", "DEF", "HELLO" 等): ``` ABC DEF HELLO ``` 注意:实际输出取决于提供的字典内容。
- 2
功能一:在 Boggle 棋盘中搜索单个单词
- 3
功能二:在 Boggle 棋盘中查找所有单词
- 4
我们学到了什么?
- 5
DIY:单词搜索 I
- 6
DIY:单词搜索 II
拼字游戏 2.0
- 1
项目描述:拼字游戏(Scrabble) 这是一个基于经典拼字游戏的编程项目,旨在实现一个可玩的拼字游戏应用程序。玩家可以轮流在棋盘上放置字母牌,组成合法单词并获得分数。游戏支持单人模式和双人对战模式,包含计分系统、单词验证功能以及游戏规则检查。 核心功能包括: - 一个 15×15 的网格棋盘,带有特殊格子(如双词得分、三字母得分等)。 - 玩家从随机抽取的字母牌中选择合适的字母进行摆放。 - 支持水平和垂直方向放置单词。 - 实时验证所放置的单词是否存在于词典中。 - 根据棋盘上的特殊格子计算得分。 - 记录每位玩家的总分,并在游戏结束时宣布获胜者。 - 提供游戏提示功能,帮助玩家找到当前可放置的最佳单词。 - 支持游戏保存与加载功能,允许暂停后继续游戏。 技术实现建议: - 使用面向对象设计,将游戏状态、棋盘、玩家、字母牌、词典等抽象为类。 - 采用合理的数据结构存储词典(如前缀树 Trie),以提高单词查找效率。 - 实现基本的游戏逻辑控制流程,包括回合管理、输入处理、得分计算和游戏结束判断。 - 可选地添加图形用户界面(GUI),使用 Python 的 Tkinter 或其他框架,或构建命令行版本。 目标是创建一个完整、可运行且具备良好用户体验的拼字游戏,同时体现良好的代码结构与可扩展性。
- 2
功能一:最少移动次数
- 3
特性 #2:可能的结果
- 4
我们学到了什么?
- 5
DIY:单词接龙 I
- 6
DIY:单词接龙 II
游戏
- 1
游戏项目描述
- 2
功能 #1:顺子手牌
- 3
功能 #2:从卡片中获得的最大分数(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
DIY:前 K 个高频元素
- 16
自定义:每 k 个一组反转链表
- 17
DIY:反转链表 II
- 18
DIY:字符串转整数(atoi)
- 19
DIY:每日温度
计算生物学
- 1
计算生物学项目描述
- 2
特性 #1:变异DNA
- 3
功能二:病毒检测
- 4
特性 #3:定位蛋白质
- 5
功能四:识别蛋白质
- 6
特性五:变异病毒
- 7
功能六:识别物种
- 8
功能七:检测蛋白质
- 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
特性 #5:最密集部署
- 7
功能六:最大用户数
- 8
功能 #7:最大连续区域
- 9
功能 #8:最大信号强度
- 10
我们学到了什么?
- 11
自定义:在二维矩阵中搜索 II
- 12
DIY:柱状图中最大的矩形
- 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
功能 #6:入站推文预测器
- 8
功能七:热门话题标签
- 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