LeetCode HOT-100 分类总结

本文概述了LeetCode中常见的算法挑战,涉及二分搜索、排序(包括链表合并、区间合并等)、滑动窗口、哈希表应用、位运算、前缀和、双指针技巧、图论、二叉树遍历、回溯法、贪心策略、动态规划、背包问题(01/完全背包)、单调栈、并查集、LRU缓存优化以及一些实用的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二分搜索

【NO.4】LeetCode HOT 100—4. 寻找两个正序数组的中位数
【NO.17】LeetCode HOT 100—33. 搜索旋转排序数组
【NO.18】LeetCode HOT 100—34. 在排序数组中查找元素的第一个和最后一个位置

排序

排序方法,如果可以确定数值的范围,可以通过转换为另一个数组的下标来统计出现的次数,及排序。

【NO.12】LeetCode HOT 100—21. 合并两个有序链表
【NO.14】LeetCode HOT 100—23. 合并 K 个升序链表(顺序合并,分治合并,优先队列)
【NO.26】LeetCode HOT 100—56. 合并区间(排序)
【NO.63】LeetCode HOT 100—215. 数组中的第K个最大元素(堆排序)
347. 前 K 个高频元素 (堆排序)

滑动窗口

【NO.3】LeetCode HOT 100—3. 无重复字符的最长子串
【NO.32】LeetCode HOT 100—76. 最小覆盖子串
【NO.69】LeetCode HOT 100—239. 滑动窗口最大值
【NO.89】LeetCode HOT 100—438. 找到字符串中所有字母异位词

哈希表

【NO.1】LeetCode HOT 100—1. 两数之和
【NO.23】LeetCode HOT 100—49. 字母异位词分组
【NO.47】LeetCode HOT 100—128. 最长连续序列
【NO.57】LeetCode HOT 100—169. 多数元素 (或者摩尔投票法)
【NO.71】LeetCode HOT 100— 253. 会议室 II(也可小顶堆,或者数组)
【NO.90】LeetCode HOT 100—448. 找到所有数组中消失的数字(也可以不使用哈希表,原地修改原数组)

位运算

【NO.48】LeetCode HOT 100—136. 只出现一次的数字 (异或运算)
【NO.82】LeetCode HOT 100—338. 比特位计数 (解法 也用到了动态规划)
【NO.91】LeetCode HOT 100—461. 汉明距离

前缀和

### LeetCode Hot100 刷题技巧与策略 LeetCodeHot100 是许多程序员提升算法能力的重要资源之一。以下是针对该部分刷题的一些技巧和策略: #### 1. **制定合理的刷题计划** - 推荐按照一定的顺序进行刷题,例如优先完成热题 HOT 100 和精选 TOP 面试题[^1]。这些题目覆盖了大部分常见的算法知识点和技术面试考点。 - 将题目按难度分类(简单、中等、困难),逐步攻克不同层次的挑战。 #### 2. **利用辅助工具提高效率** - 借助公子龙大佬开发的刷题网站及其插件功能[^2],可以更高效地查找解题思路并学习经典算法框架。 - 插件能够帮助用户快速定位到某类问题的核心解决方法,减少无谓的时间浪费。 #### 3. **注重总结归纳** - 对于每一道做过的题目,都应该尝试分析其背后的通用模式以及可能的变化形式[^4]。比如环形链表的相关变种问题(如回文链表)往往具有相似逻辑结构。 - 定期整理笔记,记录下自己容易遗忘的知识点或者巧妙的解决方案。 #### 4. **模拟真实场景训练** - 如果目标是为了准备技术面试,则建议模仿实际考试环境来进行限时答题练习[^5]。这样不仅可以锻炼思维敏捷度还能增强抗压能力。 - 同时也要关注时间复杂度空间复杂度优化等方面的要求。 #### 5. **积极参与社区讨论** - 加入像寸铁这样的优质创作者所创建的学习小组或论坛,与其他志同道合者共同探讨难题解答方案。 - 学习他人优秀的思维方式有助于拓宽视野开阔眼界。 下面提供一段简单的 Python 实现代码作为例子展示如何处理其中一类常见数据结构——链表的操作: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def hasCycle(head: ListNode) -> bool: slow = fast = head while fast and fast.next: slow = slow.next # Move one step at a time. fast = fast.next.next # Move two steps at once. if slow == fast: # If there's an intersection point found. return True return False # No cycle detected after traversal completes. ``` 此函数用于检测单向链表是否存在闭环现象,采用双指针法实现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬浮海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值