- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 LeetCode 热题 100 算法题解 - 4.爬楼梯(动态规划)
爬楼梯问题是动态规划的经典入门题目,展示了如何将问题分解为子问题并利用子问题的解来构建原问题的解。识别可以分解为相似子问题的问题结构定义状态转移方程确定边界条件选择适当的空间优化方法掌握这种动态规划的思路可以解决许多类似的计数问题,如果您对动态规划算法基础不了解可以看这篇博客:https://blog.youkuaiyun.com/lcgsmile/article/details/146914067。
2025-04-02 17:23:47
417
原创 LeetCode 热题 100 算法题解 - 4.寻找两个正序数组的中位数(二分查找)
将中位数问题转化为寻找第 k 小元素的问题通过比较两个数组的部分元素来排除不可能的部分正确处理各种边界情况掌握这种方法可以解决许多类似的有序数组合并和查找问题。虽然实现较为复杂,但通过仔细分析分割条件和边界情况,可以确保算法的正确性和高效性。
2025-04-01 11:47:10
217
原创 LeetCode 热题 100 算法题解 - 153.寻找旋转排序数组中的最小值(二分查找)
理解旋转数组的性质正确比较中间元素和右边界元素调整搜索范围的逻辑这种方法高效且简洁,时间复杂度完全符合题目要求。掌握这种变形二分查找的技巧可以解决许多类似的旋转数组问题。
2025-04-01 11:44:07
352
原创 LeetCode 热题 100 算法题解 - 33. 搜索旋转排序数组(二分查找)
理解旋转数组的性质每次二分时判断哪一部分是有序的根据目标值与有序部分的关系决定搜索方向掌握这种变形二分查找的方法可以解决许多类似的旋转数组问题。
2025-03-31 15:24:50
405
原创 LeetCode 热题 100 算法题解 - 34.在排序数组中查找元素的第一个和最后一个位置
理解如何调整二分查找来寻找边界位置处理目标值不存在的情况确保算法的时间复杂度为 O(log n)掌握这种两次二分查找的方法可以解决许多类似的边界查找问题。在实际应用中,可以根据具体情况选择更简洁或更易理解的实现方式。
2025-03-31 15:03:31
245
原创 LeetCode 热题 100 算法题解 - 74.搜索二维矩阵
利用矩阵的特殊性质(行有序且行间有序)选择合适的二分查找策略正确处理索引转换和边界条件方法二更为简洁高效,推荐在实际中使用。掌握这种将二维矩阵视为一维数组的技巧可以解决许多类似的矩阵搜索问题。
2025-03-31 12:07:13
269
原创 LeetCode 热题 100 算法题解 - 35.搜索插入位置
理解二分查找的终止条件明白循环结束后left指针的含义处理边界情况(目标值小于所有元素或大于所有元素)掌握这个模板可以解决许多类似的二分查找问题。
2025-03-31 11:24:38
237
原创 LeetCode 热题 100 算法题解 - 128.最长连续序列
给定一个未排序的整数数组 ,找出数字连续的最长序列的长度。这里的连续序列是指数值连续递增的序列,不要求这些数字在原数组中连续排列。示例 1:示例 2:示例 3:提示:核心思想:利用哈希集合快速查找的特性,找到连续序列的起点,然后向后扩展计算序列长度。步骤:复杂度分析:虽然排序后可以方便地找到连续序列,但排序的时间复杂度为 O(n log n),不满足题目要求的 O(n) 时间复杂度,因此不推荐。代码解释:以示例 1 为例:通过哈希集合的去重和快速查找特性,我们可以在 O(n) 时间内高效地找到最长
2025-03-29 19:11:29
407
原创 LeetCode 热题 100 算法题解 - 49. 字母异位词分组
方法一实现更简单,适合字符串长度较小的情况。方法二在理论上更高效,适合字符串长度较大的场景。掌握这两种方法有助于应对不同约束条件下的类似问题。在实际应用中,可以根据具体需求选择最合适的方法。
2025-03-29 19:01:20
263
原创 LeetCode 热题 100 算法题解 - 1. 两数之和(哈希)
通过使用哈希表,我们可以将两数之和问题的时间复杂度从 O(n^2) 优化到 O(n)。这种方法不仅高效,而且易于理解和实现。在实际应用中,哈希表是解决类似问题的常用工具,值得熟练掌握。
2025-03-29 18:35:14
418
原创 算法基础知识 - 12. 数据结构-二叉树
定义:每个节点最多有2个子节点(左/右子节点)的树结构关键特征根节点(Root):树的最顶层节点叶子节点(Leaf):没有子节点的末端节点内部节点:既有父节点又有子节点的节点# 节点定义(链式存储)self.left = left # 左子节点self.right = right # 右子节点。
2025-03-29 18:03:45
266
原创 算法基础知识 - 11. 数据结构-认识树(Tree)
定义:由节点(Node)和边(Edge)组成的有层次关系的集合,满足:有且仅有一个根节点(Root),没有父节点。其余节点被划分为互不相交的子树(Subtree)。类比:像家族的族谱、公司的组织架构、电脑文件夹目录。
2025-03-25 14:18:32
965
原创 算法基础知识 - 10.排序算法-快速排序详解
被誉为"20世纪十大算法之一"。它以极高的平均效率著称,是实际应用中最常用的排序算法(如Python的。A1:虽然两者都是O(n log n),但快排序的常数因子更小,且是原地排序(归并排序需额外空间)。A3:极端情况下可能(如完全逆序数组+最左基准选择),可通过尾递归优化或迭代实现避免。快速排序(Quick Sort)是由计算机科学家。递归处理这两个子数组。
2025-03-25 13:25:50
478
原创 算法基础知识 - 09.排序算法-插入排序详解
类似于整理扑克牌时的排序方式。它在处理小规模或基本有序的数据时表现优异。:虽然两者时间复杂度均为O(n²),但插入排序的。插入排序是一种简单直观的。
2025-03-25 13:14:06
720
原创 算法基础知识 - 08.排序算法-选择排序详解
与冒泡排序相比,它减少了交换次数,但比较次数仍然较高。:因为交换是跳跃式的(如。选择排序是一种简单直观的。
2025-03-25 11:03:35
796
原创 算法基础知识 - 07.排序算法-冒泡排序详解
使较大的元素逐渐“浮”到数组的末端(升序排序时)。它的名称来源于“气泡上浮”的直观现象——每次遍历都会让当前未排序部分的最大元素“冒泡”到正确位置。A1:因为它需要进行大量的重复比较和交换,尤其是逆序数据时,比较次数为n(n-1)/2次。冒泡排序是最基础的排序算法之一,其核心思想是通过。
2025-03-25 10:59:24
324
原创 算法基础知识 - 06.排序算法
排序算法用于将一组数据按照特定顺序(如升序或降序)重新排列。排序算法在数据处理、数据库索引、机器学习等领域有广泛应用。
2025-03-25 10:43:21
436
原创 算法基础知识 - 05.查找算法
查找算法用于在**数据结构(如数组、链表、树、哈希表)**中定位特定数据。将键(Key)映射到存储位置(如哈希表),实现O(1)时间复杂度的查找。中,通过不断缩小搜索范围(分治策略)快速定位目标。逐个遍历数据,直到找到目标或遍历完所有元素。
2025-03-25 10:27:00
262
原创 算法基础知识 - 03. 什么是空间复杂度
空间复杂度是衡量算法的指标。和时间复杂度类似,它也用大O符号(Big-O Notation)表示,关注的是,不包括输入数据本身占用的空间。
2025-03-25 09:31:35
391
原创 算法基础知识 - 02. 什么是时间复杂度
时间复杂度是衡量算法的指标。它不计算具体的执行时间(如秒或毫秒),而是分析算法在最坏或平均情况下,用大O符号(Big-O Notation)表示。
2025-03-25 09:21:21
321
原创 算法基础知识 - 01. 什么是算法
它是计算机科学的核心概念之一,也是编程的基础。简单来说,算法就像“菜谱”——通过清晰的指令,告诉计算机“如何一步步解决问题”。例如,快速排序的平均时间复杂度是O(n log n),比冒泡排序的O(n²)更高效。算法(Algorithm)是解决特定问题或完成特定任务的一系列。
2025-03-25 09:19:34
298
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人