2021年LeetCode算法实践总结:从队列到动态规划的全记录
需积分: 10 102 浏览量
更新于2024-10-30
收藏 45KB ZIP 举报
资源摘要信息:"LeetCode题库实践总结"
知识点一:数据结构基础
- 队列和堆栈:队列遵循先进先出原则,常用于广度优先搜索;堆栈遵循后进先出原则,常用于深度优先搜索。
- 广度优先搜索(BFS):遍历图结构时,逐层扩展节点,通常用队列实现。
- 深度优先搜索(DFS):遍历图结构时,尽可能深地搜索每个分支,一般使用递归实现。
知识点二:排序算法
- 归并排序:一种分而治之的排序算法,时间复杂度为O(n*log(n)),将数组分成两半,递归排序,然后合并。
- 动态规划:解决复杂问题时,通过将问题分解为重叠的子问题,并存储子问题解以避免重复计算的策略。
知识点三:动态规划实战
- 最长递增子序列:利用动态规划找出数组中的最长递增子序列,结合二进制搜索可以优化到O(n*log(n))时间复杂度。
- 最大子数组和:动态规划可以用来解决寻找给定整数数组中的最大子数组和问题(如Kadane算法)。
知识点四:二分查找技巧
- 二分查找:在有序数组中查找特定元素的高效算法,时间复杂度为O(log(n))。
- 在旋转排序数组中搜索:是对标准二分查找算法的扩展,需要处理数组旋转带来的特殊排序问题。
- 搜索二维矩阵:将二维矩阵拉伸为一维有序数组后,使用二分查找解决问题。
知识点五:编程技巧
- 删除所有相邻的重复项:通过使用栈的数据结构可以有效地删除字符串中相邻的重复字符。
- 有效字谜:利用哈希表记录字符串中每个字符出现的次数,然后比较两个字符串中字符出现次数的分布。
知识点六:数学问题处理
- 将两个整数相除:涉及整数除法和余数的计算。
- 细绳问题:可能涉及数学分析和求解方法,但具体问题未给出。
知识点七:二叉树操作
- 二叉树的最大深度:通过递归遍历二叉树,分别计算左右子树的最大深度,取最大值加一。
- 对称树:检查一棵二叉树是否是镜像对称的。
- 转置矩阵:通常指的是将矩阵的行列互换,得到转置矩阵。
知识点八:数组变换
- 排序数组的平方:先对数组进行排序,再对平方后的数组进行排序,或者一次性计算平方并排序。
- 两个指针和二分搜索:结合两个指针遍历数组和二分搜索,可以解决特定条件下的数组问题。
- 最小尺寸子阵列总和:利用滑动窗口方法和前缀和技巧,找出给定数组中连续子数组和的最小值。
知识点九:矩阵操作
- 设置矩阵零:遍历矩阵,利用额外的存储结构记录每行每列是否需要置零。
- 三和问题:通常指的是找出数组中所有三个元素之和等于特定值的组合。
- 最近通话次数:与数学问题结合,可能涉及到组合数学的计算。
知识点十:算法策略
- 贪婪算法:在每一步选择中都采取在当前状态下最好或最优的选择,以希望导致结果是全局最好或最优的算法。
- 加油站:可能指的是贪心策略在选择加油站以最大化行驶距离的应用问题。
在"LeetCode_2021-main"压缩包子文件中,我们可以预期包含以上知识点相关的编程题目和解题代码,通过这些题目和解题过程的实践,可以在数据结构、算法设计和问题解决能力上有显著的提高。这些知识点是算法和编程中非常重要的基础,能够帮助开发者在解决实际问题时选择合适的策略和方法。
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
2021-06-29 上传
weixin_38629939
- 粉丝: 10
- 资源: 925
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能