自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 夜深人静学算法之单调栈

使用单调栈算法可以高效解决"寻找每个元素左边第一个不小于它的元素"问题。该算法通过维护一个单调递减的栈,在O(n)时间内完成计算。实现步骤包括:1)设置哨兵元素;2)从左到右遍历数组;3)弹出小于当前元素的栈顶元素;4)记录栈顶元素作为结果;5)将当前元素入栈。该算法可灵活调整比较条件和遍历方向,适用于求左右两侧第一个大/小于当前元素的变种问题,相比朴素O(n²)算法显著提升了效率。示例代码展示了使用栈记录下标的实现方式。

2025-11-09 21:29:39 233

原创 力扣 1比特与2比特字符

我们可以把这个问题当作一个跳一跳的游戏。首先从第一个位置开始,如果这个位置的值为0,那么往后面跳一格,因为0只能和自己配对;如果该位置的值是1那么跳两格,如果恰好可以跳到n-1的位置那么就返回true(说明最后的0可以自己配对),反之则不可以。

2025-10-04 23:55:30 172

原创 蓝桥云课——黄金树

《黄金树节点权值求和问题》摘要: 题目要求计算二叉树中黄金指数为0的节点权值之和。黄金指数计算规则:根节点为0,左子节点为父节点指数+1,右子节点为-1。解题采用邻接矩阵存储树结构,通过DFS递归计算各节点黄金指数:左子节点指数=父节点+1,右子节点=父节点-1(跳过-1表示的空节点)。最后遍历统计黄金指数为0的节点权值累加和。算法时间复杂度O(n),空间复杂度O(n),能高效处理1e5量级数据。核心在于选择合适的数据存储方式和正确实现DFS遍历计算。

2025-09-26 18:36:35 931

原创 蓝桥云课逆序对的数量

我们可以逆序遍历数组,每当我们遍历到一个数组的值ai,我们就在树状数组的相应位置标记一个1,代表存在一个值为ai的数,然后求sum(1,ai-1)的值即为与ai配对的逆序对。经过一次扫描就可以得到统计所有的逆序对,但是如果数值过大我们空间就会受到限制,又注意到数据量是远远小于数值的大小的,所以这里我们可以使用离散化对数据进行压缩。给你一个长度为n的数组,要你求解有多少组数据满足i<j,并且ai>aj,也即逆序对的数量。

2025-09-20 17:05:42 223

原创 夜深人静学算法之树状数组

树状数组是一种高效处理单点更新和区间求和的数据结构,能在O(log n)时间内完成操作。相比静态的前缀和,它支持动态修改数组元素。其核心是lowbit函数,通过二进制操作快速定位节点关系。树状数组以数组形式存储,但逻辑上呈现树状结构,每个节点记录特定区间的和。单点更新时需要向上更新所有相关父节点,区间查询时则通过累加多个区间块实现。本文详细介绍了其基本原理、应用场景,并提供了代码实现示例。这种数据结构特别适合需要频繁更新和查询的场景。

2025-09-20 16:42:05 1015

原创 洛谷P10497 [USACO03OPEN] Lost Cows

摘要:本文介绍了一种利用树状数组和二分查找解决牛排序问题的方法。已知每头牛前面编号比它小的数量,要求还原原始排列。通过逆序遍历,将问题转化为在动态集合中查找第k小的元素。使用树状数组维护可用编号,结合二分查找确定每个位置的值,时间复杂度为O(n log²n)。该算法高效处理了频繁的单点更新和前缀和查询,适用于类似需要动态维护有序集合的问题。

2025-09-15 02:00:00 697

原创 夜深人静学算法之最小生成树(Prim朴素版本)

摘要:最小生成树(MST)是连通带权无向图中权值之和最小的生成树。文章详细介绍了Prim算法的实现:1)使用邻接矩阵存储图,初始化所有边权为无穷大;2)维护两个数组,vis标记节点是否在树中,dis记录各点到树的最短距离;3)算法采用贪心策略,每次选择距离最近的节点加入,并更新邻接节点的距离。Prim算法时间复杂度为O(n²),适合稠密图。文末还提供了代码实现示例和相关练习题,为学习图论算法提供了实用指导。

2025-09-04 23:46:01 446

原创 夜深人静学算法之二分查找

摘要:文章介绍了高效的二分查找算法,通过"红绿灯模板"讲解其原理。算法通过不断缩小搜索范围,在有序数组中快速定位目标值,时间复杂度仅为O(logN)。作者以童年故事引入,对比了暴力搜索的不足,详细演示了查找过程,并给出代码实现和边界处理。最后指出二分查找不仅可以用于数据查询,还能应用于更复杂的二分答案问题。

2025-08-26 23:35:56 544

原创 夜深人静学Pathon之字典

本文总结了Python字典的核心操作,涵盖增删改查四类操作。新增操作包括单键值对添加和批量更新;删除操作支持指定键删除、安全删除和清空字典;修改操作针对已有键更新值;查询操作包含直接取值和安全取值方法,并介绍了键存在性判断和三种遍历方式(键、值、键值对)。此外,还说明了popitem()在Python3.7+中的有序特性。这些方法兼顾了操作效率与安全性,是处理字典数据的必备技能。

2025-08-19 16:39:36 142

原创 迭代法和递归法求斐波那契数列任一项

斐波那契数列(Fibonacci sequence),又称‌‌:数列的前两项通常是0和1(也有版本以1和1作为初始值)。

2024-09-25 15:48:42 355

原创 迭代法和递归法求阶乘

迭代法和递归法求阶乘

2024-09-23 19:56:00 655

原创 A*B问题(大数相乘)

分别在两行输入两个不超过2000为以内的十进制非负整数,求他们的乘积。

2024-09-20 20:34:53 328

原创 A+B问题(大数相加)

利用gets语句输入两个字符串(数字,不超过100位),通过BigNumSum函数实现两个数的求和。

2024-09-19 15:14:56 439 1

原创 eclipse对齐的快捷键

选中你要对齐的代码再按Ctrl键+shift键+F。

2024-09-19 09:05:40 519

原创 计算圆周率

/以上循环是从第二项开始的,所以加上第一项的两倍。j++)//2.内循环求取分子和分母的前n项积;//a代表分子,b代表分母;i++)//1.外循环求取前n项和;2.内循环求取分子和分母的前n项积;1.外循环求取前n项和;

2024-02-08 20:34:06 429

原创 组个最小数pta

k++)//1.输入零到九这十个数所拥有的个数。k++)//2.排第一位,不为零且尽可能最小。k++)//3.排剩下的,先排小数在排大数。1.输入零到九这十个数所拥有的个数。2.排第一位,不为零且尽可能最小。3.排剩下的,先排小数再排大数。

2023-12-19 21:41:32 858 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除