- 博客(1353)
- 资源 (86)
- 收藏
- 关注
原创 C++队列、双向队列
队列(Queue)是一种基本的线性数据结构,它遵循先进先出(First In First Out, FIFO)的原则。这意味着最先被添加到队列中的元素将会是最先被移除的。和生活中,无人插队的队列一样。队列内部实现可能是连续空间,也可能是多段空间。
2024-09-30 07:00:00 1165 92
原创 VS2019打开《喜缺全书算法册》附带代码的方法兼述单元测试
使用方法一:修改某个封装类,然后运行所有测试用例。看是否有测试用例,没通过。调试没有通过的测试用例。在改测试用例上,单击鼠标右键,在右键菜单中选择“调试”。使用方法二:修改某题的源码,然后运行此类的测试用例。使用方法三:输出日志。Microsoft::VisualStudio::CppUnitTestFramework::Logger::WriteMessage("d"); 选中此测试用例才会显示结果。
2024-07-28 07:00:00 3179 56
原创 【C++ 前缀和 数论】1590. 使数组和能被 P 整除|2038
给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。子数组 定义为原数组中连续的一组元素。
2024-10-01 17:00:00 534
原创 【C++前缀和 数论 贪心】2245. 转角路径的乘积中最多能有几个尾随零|2036
给你一个二维整数数组 grid ,大小为 m x n,其中每个单元格都含一个正整数。转角路径 定义为:包含至多一个弯的一组相邻单元。具体而言,路径应该完全 向水平方向 或者 向竖直方向 移动过弯(如果存在弯),而不能访问之前访问过的单元格。在过弯之后,路径应当完全朝 另一个 方向行进:如果之前是向水平方向,那么就应该变为向竖直方向;反之亦然。当然,同样不能访问之前已经访问过的单元格。一条路径的 乘积 定义为:路径上所有值的乘积。请你从 grid 中找出一条乘积中尾随零数目最多的转角路径,并返回该路径中
2024-10-01 07:00:00 516 1
原创 【C++单调队列】1438. 绝对差不超过限制的最长连续子数组|1672
给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。
2024-09-30 07:00:00 618 1
原创 【C++前缀和 动态规划 博弈】1140. 石子游戏 II|2034
Alice 和 Bob 继续他们的石子游戏。许多堆石子 排成一行,每堆都有正整数颗石子 piles[i]。游戏以谁手中的石子最多来决出胜负。Alice 和 Bob 轮流进行,Alice 先开始。最初,M = 1。在每个玩家的回合中,该玩家可以拿走剩下的 前 X 堆的所有石子,其中 1
2024-09-29 17:00:00 834
原创 【C++前缀和】1737. 满足三条件之一需改变的最少字符数|1952
给你两个字符串 a 和 b ,二者均由小写字母组成。一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。操作的最终目标是满足下列三个条件 之一 :a 中的 每个字母 在字母表中 严格小于 b 中的 每个字母 。b 中的 每个字母 在字母表中 严格小于 a 中的 每个字母 。a 和 b 都 由 同一个 字母组成。返回达成目标所需的 最少 操作数。
2024-09-29 07:00:00 894 1
原创 【C++前缀和 动态规划 贪心】813. 最大平均值和的分组|1936
给定数组 nums 和一个整数 k 。我们将给定的数组 nums 分成 最多 k 个非空子数组,且数组内部是连续的 。 分数 由每个子数组内的平均值的总和构成。注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。返回我们所能得到的最大 分数 是多少。答案误差在 10-6 内被视为是正确的。
2024-09-28 17:00:00 817 2
转载 【超音速 专利CN115880365A 】一种双工位自动螺丝拧装检测方法、系统及装置
在智能工厂逐渐普及的今天,工厂对电动工具的动作状态和质量的实时追踪仍然是短板,电动工具在智能化工厂工作时主要存在各种问题,一是电动工具会在使用过程中会产生不可避免的损耗,由损耗带来的准确性下降易导致螺丝卡死、打滑;二是在智能工厂正常作业的过程中,机械臂和传送带的工作周期不能保证永远契合,随着作业时间的增长,机械臂与传送带的工作逐渐失衡,使作业存在隐患;三是在工厂中检测产品质量的方式还是依赖传统的人工质检,这种质检手段无法在总装车间实现全流程全过程覆盖,这样就无法及时发现产品问题并阻止损失。如今多数的智能工
2024-09-28 15:30:00 23
原创 【C++前缀和】2731. 移动机器人|1922
有一些机器人分布在一条无限长的数轴上,他们初始坐标用一个下标从 0 开始的整数数组 nums 表示。当你给机器人下达命令时,它们以每秒钟一单位的速度开始移动。给你一个字符串 s ,每个字符按顺序分别表示每个机器人移动的方向。'L' 表示机器人往左或者数轴的负方向移动,'R' 表示机器人往右或者数轴的正方向移动。当两个机器人相撞时,它们开始沿着原本相反的方向移动。请你返回指令重复执行 d 秒后,所有机器人之间两两距离之和。由于答案可能很大,请你将答案对 109 + 7 取余后返回。注意:对于坐标在
2024-09-28 07:00:00 691
原创 【C++前缀和】2875. 无限数组的最短子数组|1913
给你一个下标从 0 开始的数组 nums 和一个整数 target 。下标从 0 开始的数组 infinite_nums 是通过无限地将 nums 的元素追加到自己之后生成的。请你从 infinite_nums 中找出满足 元素和 等于 target 的 最短 子数组,并返回该子数组的长度。如果不存在满足条件的子数组,返回 -1
2024-09-27 15:30:00 545 4
原创 【C++前缀和 位运算 贪心 】2680. 最大或值|1912
给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 k 。每一次操作中,你可以选择一个数并将它乘 2 。你最多可以进行 k 次操作,请你返回 nums[0] | nums[1] | ... | nums[n - 1] 的最大值。a | b 表示两个整数 a 和 b 的 按位或 运算。
2024-09-27 07:00:00 629
原创 【C++前缀和】1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?|1858
给你一个下标从 0 开始的正整数数组 candiesCount ,其中 candiesCount[i] 表示你拥有的第 i 类糖果的数目。同时给你一个二维数组 queries ,其中 queries[i] = [favoriteTypei, favoriteDayi, dailyCapi] 。你按照如下规则进行一场游戏:你从第 0 天开始吃糖果。你在吃完 所有 第 i - 1 类糖果之前,不能 吃任何一颗第 i 类糖果。在吃完所有糖果之前,你必须每天 至少 吃 一颗 糖果。请你构建一个布尔型数组
2024-09-26 17:00:00 666 4
原创 【C++差分数组 二分查找】P1083借教室
有n天,第i天有r[i]间空教室。有m份申请req[i] = {di,starti,endi} 表示从starti天到endi天,都需要di间教室。包括第starti和endi天。都教室没有任何要求。如果能满足所有人要求,返回0。按申请顺序处理所有人的要求,返回第一个无法满足的请求编号。
2024-09-26 07:00:00 635
原创 【C++前缀和】1546. 和为目标值且不重叠的非空子数组的最大数目|1855
给你一个数组 nums 和一个整数 target 。请你返回 非空不重叠 子数组的最大数目,且每个子数组中数字和都为 target 。
2024-09-25 17:00:00 1392 3
原创 【C++前缀和 状态压缩】1177. 构建回文串检测|1848
给你一个字符串 s,请你对 s 的子串进行检测。每次检测,待检子串都可以表示为 queries[i] = [left, right, k]。我们可以 重新排列 子串 s[left], ..., s[right],并从中选择 最多 k 项替换成任何小写英文字母。 如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。返回答案数组 answer[],其中 answer[i] 是第 i 个待检子串 queries[i] 的检测结果。注意:在替换时,子串中的每
2024-09-25 07:00:00 639
原创 【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760
令2165,和此题几乎相等。给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和 arr[j] 之间的间隔是 |i - j| 。返回一个长度为 n 的数组 intervals ,其中 intervals[i] 是 arr[i] 和 arr 中每个相同元素(与 arr[i] 的值相同)的 间隔之和 。注意:|x| 是 x 的绝对值。
2024-09-24 17:00:00 918 2
原创 C++堆(优先队列)priority_queue
堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(大根堆);每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(小根堆)。从堆的概念可知,堆是一棵完全二叉树,因此可以使用层序的规则采用顺序的方式来高效存储。完全二叉树,我的理解:任何节点的子节点只有以下三种情况:一,没有孩子。二,有两个孩子。三,只有左孩子。不会出现只有右孩子,没有左孩子的情况。根节点的编号1,根节点的左孩子编号2,根节点的右孩子编号3。2的孩子编号为:4,5。3的孩子编号:6,7。
2024-09-24 07:00:00 554
原创 C++离线查询
离线算法( offline algorithms),离线计算就是在计算开始前已知所有输入数据,输入数据不会产生变化,且在解决一个问题后就要立即得出结果的前提下进行的计算。通俗的说:离线查询:问完所有问题后,依次回答。可以按某个查询值排序,这样方便处理。**注意**:要记录排序前,排序后的对应关系。比如:对查询的下标排序,不对查询排序。在线查询:每问一个问题,就回答。
2024-09-23 07:00:00 3469 120
原创 【C++稳定排序 离线查询】2343. 裁剪数字后查询第 K 小的数字|1651
stable_sort(稳定排序函数)与sort的区别:sort更类似于快速排序的思想,而stable_sort用得是归并排序的思路当数据都相同时,他不会打乱原有的顺序,所以更加稳定例如:有两个相同的数A和B,在sort排序后B有可能会跑到A的前面,但是stable_sort则不会打乱原有顺序
2024-09-23 07:00:00 1732 4
转载 【超音速 专利 CN116147483A】一种适用于极片纠偏对齐度的检测方法、系统及平台
本发明公开了一种适用于极片纠偏对齐度的检测方法、系统及平台。本发明方案通过方法获取极片图像数据,并实时处理所述极片图像数据;根据处理后的极片图像数据,生成并获取与所述极片图像数据相对应的极片长度数据;结合所述极片长度数据,判定极片长度是否符合预设的阈值,若符合,则记录所述极片的长度数据,并实时纠偏对齐度自适应处理所述极片;否则,踢除所述极片,以及与所述方法相应的系统、平台以及存储介质;可以控制极片长度,将异常片排废。并且通过纠偏自适应算法达到保护电芯整体对齐度的效果,提高电芯的良品率,减少整个电芯排废,减少
2024-09-22 18:36:54 136 3
原创 【C++前缀和 排序】2171. 拿出最少数目的魔法豆|1748
给定一个 正整数 数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少还有一颗 魔法豆的袋子)魔法豆的数目 相等。一旦把魔法豆从袋子中取出,你不能再将它放到任何袋子中。请返回你需要拿出魔法豆的 最少数目。
2024-09-22 17:00:00 696
原创 【C++前缀和 状态压缩】2588. 统计美丽子数组数目|1696
给你一个下标从 0 开始的整数数组nums 。每次操作中,你可以:选择两个满足 0
2024-09-22 07:00:00 1194 1
原创 【C++前缀和】974. 和可被 K 整除的子数组|1675
给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。子数组 是数组中 连续 的部分。
2024-09-21 17:00:00 828 1
原创 【C++前缀异或】1738. 找出第 K 大的异或坐标值|1671
给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。矩阵中坐标 (a, b) 的 目标值 可以通过对所有元素 matrix[i][j] 执行异或运算得到,其中 i 和 j 满足 0
2024-09-20 15:30:00 721 1
原创 【C++前缀和】2222. 选择建筑的方案数|1656
给你一个下标从 0 开始的二进制字符串 s ,它表示一条街沿途的建筑类型,其中:s[i] = '0' 表示第 i 栋建筑是一栋办公楼,s[i] = '1' 表示第 i 栋建筑是一间餐厅。作为市政厅的官员,你需要随机 选择 3 栋建筑。然而,为了确保多样性,选出来的 3 栋建筑 相邻 的两栋不能是同一类型。比方说,给你 s = "001101" ,我们不能选择第 1 ,3 和 5 栋建筑,因为得到的子序列是 "011" ,有相邻两栋建筑是同一类型,所以 不合 题意。请你返回可以选择 3 栋建筑的 有
2024-09-20 07:00:00 1556 2
原创 【C++前后缀分解】2484. 统计回文子序列数目|2223
给你数字字符串 s ,请你返回 s 中长度为 5 的 回文子序列 数目。由于答案可能很大,请你将答案对 109 + 7 取余 后返回。提示:如果一个字符串从前往后和从后往前读相同,那么它是 回文字符串 。子序列是一个字符串中删除若干个字符后,不改变字符顺序,剩余字符构成的字符串。
2024-09-19 17:00:00 1616
原创 【C++前后缀分解 降维】2906. 构造乘积矩阵|2074
给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 :对于每个元素 p[i][j] ,它的值等于除了 grid[i][j] 外所有元素的乘积。乘积对 12345 取余数。返回 grid 的乘积矩阵。
2024-09-18 17:00:00 767
原创 【C++前后缀分解】1888. 使二进制字符串字符交替的最少反转次数|2005
给你一个二进制字符串 s 。你可以按任意顺序执行以下两种操作任意次:类型 1 :删除 字符串 s 的第一个字符并将它 添加 到字符串结尾。类型 2 :选择 字符串 s 中任意一个字符并将该字符 反转 ,也就是如果值为 '0' ,则反转得到 '1' ,反之亦然。请你返回使 s 变成 交替 字符串的前提下, 类型 2 的 最少 操作次数 。我们称一个字符串是 交替 的,需要满足任意相邻字符都不同。比方说,字符串 "010" 和 "1010" 都是交替的,但是字符串 "0100" 不是。
2024-09-18 07:00:00 1430
原创 【C++前后缀分解】1653. 使字符串平衡的最少删除次数|1793
给你一个字符串 s ,它仅包含字符 'a' 和 'b' 。你可以删除 s 中任意数目的字符,使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j ,且 s[i] = 'b' 的同时 s[j]= 'a' ,此时认为 s 是 平衡 的。请你返回使 s 平衡 的 最少 删除次数。
2024-09-17 17:00:00 701
原创 【C++前后缀分解 动态规划】2100. 适合野炊的日子|1702
你和朋友们准备去野炊。给你一个下标从 0 开始的整数数组 security ,其中 security[i] 是第 i 天的建议出行指数。日子从 0 开始编号。同时给你一个整数 time 。如果第 i 天满足以下所有条件,我们称它为一个适合野炊的日子:第 i 天前和后都分别至少有 time 天。第 i 天前连续 time 天建议出行指数都是非递增的。第 i 天后连续 time 天建议出行指数都是非递减的。更正式的,第 i 天是一个适合野炊的日子当且仅当:security[i - time] >= s
2024-09-17 07:00:00 933 3
原创 C++前后缀分解
分治法的一种,将数组和字符串,拆分成前缀和后缀。字符串(数组)的前缀是字符串的前i个元素:s.substr(0,i-1),即s[0] $\dots$ s[i-1]。同理后缀就是字符串s的后几个元素(字符)。不失一般型,我们以字符串s=“abcde"为例,s有5种拆分方法:
2024-09-16 07:00:00 1512 115
原创 【C++前后缀分解】1031. 两个非重叠子数组的最大和|1680
给你一个整数数组 nums 和两个整数 firstLen 和 secondLen,请你找出并返回两个非重叠 子数组 中元素的最大和,长度分别为 firstLen 和 secondLen 。长度为 firstLen 的子数组可以出现在长为 secondLen 的子数组之前或之后,但二者必须是不重叠的。子数组是数组的一个 连续 部分。
2024-09-16 07:00:00 681
原创 【前缀和】2145. 统计隐藏数组数目|1614
给你一个下标从 0 开始且长度为 n 的整数数组 differences ,它表示一个长度为 n + 1 的 隐藏 数组 相邻 元素之间的 差值 。更正式的表述为:我们将隐藏数组记作 hidden ,那么 differences[i] = hidden[i + 1] - hidden[i] 。同时给你两个整数 lower 和 upper ,它们表示隐藏数组中所有数字的值都在 闭 区间 [lower, upper] 之间。比方说,differences = [1, -3, 4] ,lower = 1 ,u
2024-09-15 17:00:00 548 1
原创 【C++前缀和】1524. 和为奇数的子数组数目|1610
给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。
2024-09-15 07:00:00 762
原创 【C++二分查找】2560. 打家劫舍 IV
沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。给你一个整数数组 nums 表示每间房屋存放的现金金额。形式上,从左起第 i 间房屋中放有 nums[i] 美元。另给你一个整数 k ,表示窃贼将会窃取的 最少 房屋数。小偷总能窃取至少 k 间房屋。返回小偷的 最小 窃取能力。
2024-09-14 17:00:00 860
原创 【C++二分查找 容斥原理】1201. 丑数 III
丑数是可以被 a 或 b 或 c 整除的 正整数 。给你四个整数:n 、a 、b 、c ,请你设计一个算法来找出第 n 个丑数。
2024-09-14 07:00:00 873
喜缺全书算法册对应源码单元测试用例
2024-07-05
本博客配套流程图,会经常更新
2024-04-24
搜索矩阵C++实现:二分查找Z形查找
2023-12-17
长度最短的子数组C++实现
2023-12-10
[二分查找双指针]LeetCode881: 救生艇
2023-12-03
两数之和 - 输入有序数组
2023-11-26
C++二分查找算法:132 模式
2023-11-12
C++算法:第 N 位数字原理、源码、测试用例
2023-11-05
C++二分查找算法应用:最长递增子序列 原理、源码、测试用例
2023-10-29
二分应用:峰值查找 原理、源码、测试用例
2023-10-22
C++算法:前缀和基础
2023-10-15
时间复杂度O(40n*n)的C++算法:修改图中的边权
2023-10-14
多源最短路径的原理及C++实现
2023-10-04
堆优化迪氏最短单源路径原理及C++实现
2023-10-03
.有向图计数优化版原理及C++实现
2023-10-02
有向图访问计数的原理及C++实现
2023-10-01
朴素迪氏最短单源路径的原理及C++源码及测试用例
2023-09-30
01BFS最短距离原理和C++实现
2023-09-29
深度优先搜索(BFS)的原理和C++实现
2023-09-28
美丽塔单调栈O(n)解法
2023-09-27
较难算法: 美丽塔 时间复杂度O(nlongn)
2023-09-24
让数组不相等的最小总代价
2023-09-23
喜缺全书算法册 C++实现
2023-09-17
二分查找旋转数组源码和视频
2023-08-20
喜缺全书之平凡的经历最新版
2023-08-18
《闻缺陷则喜》之《主册》
2022-09-10
简单的C#类 生成对应的C#类
2021-11-07
保存文件的同时删除文件,保存用时会略微升高
2021-10-11
多线程样例一 读写参数文件
2021-09-09
《闻缺陷则喜》之《软件开发的那些人》 20230917
2021-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人