给定数列 a1,a2,...,an,依次进行 q 个操作,操作分两类:
如果需要存储少量结构化数据,优先用 json(轻量 header),而非数组(超大 header);如果数组元素固定且少,直接拆成普通字段,比数组更省空间。
因此,区间修改 + 单点查询的问题可以转化为:用树状数组维护差分数组 diff,将原问题的区间修改变为树状数组的两次单点修改,原问题的单点查询变...
普通线段树的节点区间表示数组的下标范围,节点存储的是该下标区间内的信息(如和、最大值);而权值线段树的节点区间表示数据的数值范围,节点存储的是该...
在学习一个新的数据结构前,我们先搞懂它能解决什么问题,这样才不会学的云里雾里。
在讲懒标记之前,我们先回顾下基础线段树的单点修改逻辑:递归找到目标叶子节点,修改后一路向上pushup更新父节点的信息,整个过程只涉及从根到叶子...
push方法是数组的内置方法,用于在数组末尾追加一个或多个元素,会自动更新数组的长度,使用时带括号并传入要追加的元素,这是实际开发中新增数组元素的首选方式。
在正式学习矩阵乘法前,我们首先要搞清楚什么是矩阵,以及算法中常用的特殊矩阵有哪些。这些基础概念是后续所有运算的前提,理解透彻才能避免后续踩坑。
2026-02-09:使库存平衡的最少丢弃次数。用go语言,给定两个整数 w、m 和一个整数数组 arrivals(第 i 项表示第 i 天到达的物品种类,天数...
2026-02-08:大于平均值的最小未出现正整数。用go语言,给定一个整数数组 nums。先计算数组所有元素之和除以元素个数得到平均值。然后从正整数中按从小到...
2026-02-04:数组元素相等的最小操作次数。用go语言,给定一个长度为 n 的整型数组 nums。每一步操作可以选取数组中一段相邻且非空的区间,把该区间内...
总的时间复杂度可以概括为 O(M log M + n log M),其中 M 是数组元素的最大可能值(70000),n 是输入数组 nums 的长度。
2026-02-02:没有公共位的整数最大乘积。用go语言,给定一个整数数组 nums,选出两个不同位置的元素(下标不同),要求这两个数在二进制表示上没有共同为...
2026-01-31:重排完成顺序。用go语言,给定两个数组:order 长度为 n,包含 1 到 n 的所有编号且互不重复,数组中元素的先后位置表示选手完成比...
2026-02-06:碗子数组的数目。用go语言,给定一个元素互不相同的整数数组 nums。把任意一个连续片段 numsl..r 记作“碗”,当且仅当满足:
交换函数Swap:冒泡排序的交换逻辑是原地交换(直接操作原数组的两个元素),无论Swap是用临时变量实现(int temp=*a;*a=*b;*b=temp;)...
最好情况:任意输入规模的最小运行次数(下界) 例如:在一个长度为N数组中搜索一个数据x 最好情况:1次找到 最坏情况:N次找到 平均情况:N/2次找到 在实际中...
第一种写法的前提是明确规定了树的度为N,也就是说一个根结点的子结点数不能超过该值,用指针数组可以表示
ARRAY_SIZE 宏是C/C++中用于在编译时获取数组元素个数的常用宏。我来详细讲解它的原理、作用和注意事项。