当前位置: 首页 > news >正文

Leetcode之 Hot 100

如何高效刷 Hot 100?

1 按专题刷:不要随机刷。选择一个专题(如“动态规划”),集中刷 5-10 道题,总结规律和模板。
2 先思考,后看解:给自己 15-30 分钟独立思考,想不出来没关系,但一定要有自己的思路。然后看题解,理解最优解法的精髓。
3 画图分析:对于链表、二叉树、递归、动态规划等问题,动手画图能极大地帮助理解。
4 反复练习:过一段时间(如一周后)重新做一遍之前做过的题,确保真正掌握,而不是“背答案”。
5 总结模板:很多题有通用解法。例如:

回溯模板:选择 -> 递归 -> 撤销选择。
二叉树递归模板:处理当前节点 -> 递归左子树 -> 递归右子树。
动态规划步骤:定义状态 -> 推导状态转移方程 -> 确定初始条件 -> 计算顺序。

专题

1. 哈希表

核心思想:利用 O(1) 的查找时间,用空间换时间,常用于快速查找、计数或去重。

经典例题:

  1. 两数之和 - 哈希表记录遍历过的数字和索引。
  2. 字母异位词分组 - 将排序后的字符串作为哈希表的键。
  3. 最长连续序列 - 利用哈希集合快速判断数字是否存在。

2. 双指针

核心思想:使用两个指针协同遍历,常用于数组/链表操作,优化时间复杂度。

经典例题:

  1. 盛最多水的容器 - 左右指针向中间移动,每次移动高度较小的那个。
  2. 三数之和 - 排序后固定一个数,转化为两数之和问题,用双指针寻找。
  3. 接雨水 - 左右指针记录左右最大值,按较小一边计算雨水。

3. 滑动窗口

核心思想:维护一个窗口,通过移动左右指针来找到符合条件的子串/子数组。

经典例题:

  1. 无重复字符的最长子串 - 用哈希集合记录窗口内字符。
  2. 最小覆盖子串 - 用哈希表记录需要匹配的字符数量。
  3. 找到字符串中所有字母异位词 - 固定长度的滑动窗口。

4. 链表

核心思想:掌握虚拟头节点、快慢指针、反转链表等技巧。

经典例题:

  1. 两数相加 - 模拟加法,注意进位。
  2. 合并两个有序链表 - 递归或迭代合并。
  3. 环形链表 - 快慢指针判断是否有环。
  4. 反转链表 - 迭代或递归反转。
  5. 相交链表 - 巧妙的双指针走法。

5. 二叉树

核心思想:熟练掌握递归和迭代的遍历方式(前序、中序、后序、层序)。

经典例题:

  1. 二叉树的中序遍历 - 递归或迭代(使用栈)。
  2. 对称二叉树 - 递归比较左右子树。
  3. 二叉树的最大深度 - 递归求深度。
  4. 翻转二叉树 - 递归交换左右子树。
  5. 二叉树的层序遍历 - 使用队列进行 BFS。

6. 回溯算法

核心思想:通过递归尝试所有可能,在“岔路口”做出选择,遇到“死路”时回退。

经典例题:

  1. 全排列 - 经典回溯,使用 used 数组标记已使用元素。
  2. 子集 - 回溯或迭代。
  3. 单词搜索 - 二维平面上的回溯。

7. 动态规划

核心思想:将复杂问题分解为简单子问题,存储子问题的解以避免重复计算。

经典例题:

  1. 爬楼梯 - 经典入门题,dp[i] = dp[i-1] + dp[i-2]。
  2. 买卖股票的最佳时机 - 记录历史最低价。
  3. 单词拆分 - dp[i] 表示前 i 个字符能否被拆分。
  4. 打家劫舍 - dp[i] = max(dp[i-1], dp[i-2] + nums[i])。
  5. 完全平方数 - dp[i] = min(dp[i], dp[i - j*j] + 1)。

8. 栈与队列

核心思想:利用栈的 LIFO 和队列的 FIFO 特性解决问题。

经典例题:

  1. 有效的括号 - 使用栈匹配括号。
  2. 柱状图中最大的矩形 - 单调栈。
  3. 最小栈 - 设计一个支持获取最小值的栈。

9. 二分查找

核心思想:在有序集合中通过比较中间元素来快速缩小搜索范围。

经典例题:

  1. 寻找两个正序数组的中位数 - 难题,本质是寻找第 k 小数。
  2. 搜索旋转排序数组 - 在局部有序的数组中进行二分。

10. 图论

核心思想:DFS/BFS 遍历,并查集处理连通性问题。

经典例题:

  1. 岛屿数量 - DFS/BFS 淹没岛屿。
  2. 课程表 - 拓扑排序判断有向图是否有环。
http://www.dtcms.com/a/474110.html

相关文章:

  • 建立能网上交易的网站多少钱wordpress调取多个分类文章
  • MySQL 索引:原理、分类与操作指南
  • Blender机箱盒体门窗铰链生成器资产预设 Hingegenious
  • 网站托管就业做美食有哪些网站
  • 神经符号AI的深度探索:从原理到实践的全景指南
  • 零食网站建设规划书建行输了三次密码卡锁怎么解
  • Python代码示例
  • 济南市历下区建设局官方网站wordpress高级套餐
  • ALLEGRO X APD版图单独显示某一网络的方法
  • 计算机网络基础篇——如何学习计算机网络?
  • 电子商务网站建设的总体设计wordpress dux主题5.0版本
  • 《jEasyUI 创建简单的菜单》
  • AI【前端浅学】
  • 怎么设置网站名称失眠先生 wordpress
  • 低空物流+韧性供应链:技术架构与企业级落地的开发实践指南
  • Quartus II软件安装步骤(附安装包)Quartus II 18超详细下载安装教程
  • 动规——棋圣匹配
  • 侵入别人的网站怎么做我的家乡网页制作步骤
  • Thonny(Python IDE)下载和安装教程(附安装包)
  • Fastdfs_MinIO_腾讯COS_具体逻辑解析
  • SDCC下载和安装图文教程(附安装包,C语言编译器)
  • 用python做的电商网站常德网站建设费用
  • LSTM新架构论文分享5
  • 自然语言处理分享系列-词向量空间中的高效表示估计(三)
  • 网页做网站的尺寸最新永久ae86tv最新
  • java的StringJoiner用法
  • 作业、工时、工作中心的一些配置杂记
  • 陇南做网站网站网站建设的原则有哪些
  • 网站建设费用价格明细表有道云笔记 同步 wordpress
  • Uniapp微信小程序开发:微信小程序支付功能后台代码