- 博客(1341)
- 资源 (86)
- 收藏
- 关注
原创 C++离线查询
离线算法( offline algorithms),离线计算就是在计算开始前已知所有输入数据,输入数据不会产生变化,且在解决一个问题后就要立即得出结果的前提下进行的计算。通俗的说:离线查询:问完所有问题后,依次回答。可以按某个查询值排序,这样方便处理。**注意**:要记录排序前,排序后的对应关系。比如:对查询的下标排序,不对查询排序。在线查询:每问一个问题,就回答。
2024-09-23 07:00:00 2334 107
原创 VS2019打开《喜缺全书算法册》附带代码的方法兼述单元测试
使用方法一:修改某个封装类,然后运行所有测试用例。看是否有测试用例,没通过。调试没有通过的测试用例。在改测试用例上,单击鼠标右键,在右键菜单中选择“调试”。使用方法二:修改某题的源码,然后运行此类的测试用例。使用方法三:输出日志。Microsoft::VisualStudio::CppUnitTestFramework::Logger::WriteMessage("d"); 选中此测试用例才会显示结果。
2024-07-28 07:00:00 3149 55
原创 【C++差分数组 二分查找】P1083借教室
有n天,第i天有r[i]间空教室。有m份申请req[i] = {di,starti,endi} 表示从starti天到endi天,都需要di间教室。包括第starti和endi天。都教室没有任何要求。如果能满足所有人要求,返回0。按申请顺序处理所有人的要求,返回第一个无法满足的请求编号。
2024-09-26 07:00:00 356
原创 【C++前缀和】1546. 和为目标值且不重叠的非空子数组的最大数目|1855
给你一个数组 nums 和一个整数 target 。请你返回 非空不重叠 子数组的最大数目,且每个子数组中数字和都为 target 。
2024-09-25 17:00:00 901 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 504
原创 【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 723 2
原创 C++堆(优先队列)priority_queue
堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆(大根堆);每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆(小根堆)。从堆的概念可知,堆是一棵完全二叉树,因此可以使用层序的规则采用顺序的方式来高效存储。完全二叉树,我的理解:任何节点的子节点只有以下三种情况:一,没有孩子。二,有两个孩子。三,只有左孩子。不会出现只有右孩子,没有左孩子的情况。根节点的编号1,根节点的左孩子编号2,根节点的右孩子编号3。2的孩子编号为:4,5。3的孩子编号:6,7。
2024-09-24 07:00:00 480
原创 【C++稳定排序 离线查询】2343. 裁剪数字后查询第 K 小的数字|1651
stable_sort(稳定排序函数)与sort的区别:sort更类似于快速排序的思想,而stable_sort用得是归并排序的思路当数据都相同时,他不会打乱原有的顺序,所以更加稳定例如:有两个相同的数A和B,在sort排序后B有可能会跑到A的前面,但是stable_sort则不会打乱原有顺序
2024-09-23 07:00:00 1717 4
转载 【超音速 专利 CN116147483A】一种适用于极片纠偏对齐度的检测方法、系统及平台
本发明公开了一种适用于极片纠偏对齐度的检测方法、系统及平台。本发明方案通过方法获取极片图像数据,并实时处理所述极片图像数据;根据处理后的极片图像数据,生成并获取与所述极片图像数据相对应的极片长度数据;结合所述极片长度数据,判定极片长度是否符合预设的阈值,若符合,则记录所述极片的长度数据,并实时纠偏对齐度自适应处理所述极片;否则,踢除所述极片,以及与所述方法相应的系统、平台以及存储介质;可以控制极片长度,将异常片排废。并且通过纠偏自适应算法达到保护电芯整体对齐度的效果,提高电芯的良品率,减少整个电芯排废,减少
2024-09-22 18:36:54 127 3
原创 【C++前缀和 排序】2171. 拿出最少数目的魔法豆|1748
给定一个 正整数 数组 beans ,其中每个整数表示一个袋子里装的魔法豆的数目。请你从每个袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少还有一颗 魔法豆的袋子)魔法豆的数目 相等。一旦把魔法豆从袋子中取出,你不能再将它放到任何袋子中。请返回你需要拿出魔法豆的 最少数目。
2024-09-22 17:00:00 687
原创 【C++前缀和 状态压缩】2588. 统计美丽子数组数目|1696
给你一个下标从 0 开始的整数数组nums 。每次操作中,你可以:选择两个满足 0
2024-09-22 07:00:00 1186 1
原创 【C++前缀和】974. 和可被 K 整除的子数组|1675
给定一个整数数组 nums 和一个整数 k ,返回其中元素之和可被 k 整除的非空 子数组 的数目。子数组 是数组中 连续 的部分。
2024-09-21 17:00:00 822 1
原创 【C++前缀异或】1738. 找出第 K 大的异或坐标值|1671
给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。矩阵中坐标 (a, b) 的 目标值 可以通过对所有元素 matrix[i][j] 执行异或运算得到,其中 i 和 j 满足 0
2024-09-20 15:30:00 714 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 1550 2
原创 【C++前后缀分解】2484. 统计回文子序列数目|2223
给你数字字符串 s ,请你返回 s 中长度为 5 的 回文子序列 数目。由于答案可能很大,请你将答案对 109 + 7 取余 后返回。提示:如果一个字符串从前往后和从后往前读相同,那么它是 回文字符串 。子序列是一个字符串中删除若干个字符后,不改变字符顺序,剩余字符构成的字符串。
2024-09-19 17:00:00 1609
原创 【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 759
原创 【C++前后缀分解】1888. 使二进制字符串字符交替的最少反转次数|2005
给你一个二进制字符串 s 。你可以按任意顺序执行以下两种操作任意次:类型 1 :删除 字符串 s 的第一个字符并将它 添加 到字符串结尾。类型 2 :选择 字符串 s 中任意一个字符并将该字符 反转 ,也就是如果值为 '0' ,则反转得到 '1' ,反之亦然。请你返回使 s 变成 交替 字符串的前提下, 类型 2 的 最少 操作次数 。我们称一个字符串是 交替 的,需要满足任意相邻字符都不同。比方说,字符串 "010" 和 "1010" 都是交替的,但是字符串 "0100" 不是。
2024-09-18 07:00:00 1424
原创 【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 694
原创 【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 923 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 1487 115
原创 【C++前后缀分解】1031. 两个非重叠子数组的最大和|1680
给你一个整数数组 nums 和两个整数 firstLen 和 secondLen,请你找出并返回两个非重叠 子数组 中元素的最大和,长度分别为 firstLen 和 secondLen 。长度为 firstLen 的子数组可以出现在长为 secondLen 的子数组之前或之后,但二者必须是不重叠的。子数组是数组的一个 连续 部分。
2024-09-16 07:00:00 673
原创 【前缀和】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 543 1
原创 【C++前缀和】1524. 和为奇数的子数组数目|1610
给你一个整数数组 arr 。请你返回和为 奇数 的子数组数目。由于答案可能会很大,请你将结果对 10^9 + 7 取余后返回。
2024-09-15 07:00:00 757
原创 【C++二分查找】2560. 打家劫舍 IV
沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。给你一个整数数组 nums 表示每间房屋存放的现金金额。形式上,从左起第 i 间房屋中放有 nums[i] 美元。另给你一个整数 k ,表示窃贼将会窃取的 最少 房屋数。小偷总能窃取至少 k 间房屋。返回小偷的 最小 窃取能力。
2024-09-14 17:00:00 855
原创 【C++二分查找 容斥原理】1201. 丑数 III
丑数是可以被 a 或 b 或 c 整除的 正整数 。给你四个整数:n 、a 、b 、c ,请你设计一个算法来找出第 n 个丑数。
2024-09-14 07:00:00 864
原创 【二分查找】1348. 推文计数
一家社交媒体公司正试图通过分析特定时间段内出现的推文数量来监控其网站上的活动。这些时间段可以根据特定的频率( 每分钟 、每小时 或 每一天 )划分为更小的 时间段 。例如,周期 [10,10000] (以 秒 为单位)将被划分为以下频率的 时间块 :每 分钟 (60秒 块): [10,69], [70,129], [130,189], ..., [9970,10000]每 小时 (3600秒 块):[10,3609], [3610,7209], [7210,10000]每 天 (86400秒 块):
2024-09-13 15:30:00 705 1
原创 【C++二分查找】2517. 礼盒的最大甜蜜度
给你一个正整数数组 price ,其中 price[i] 表示第 i 类糖果的价格,另给你一个正整数 k 。商店组合 k 类 不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。返回礼盒的 最大 甜蜜度。
2024-09-13 07:00:00 908 1
原创 【C++二分查找】2861. 最大合金数
假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制造合金。每台机器都需要特定数量的每种金属来创建合金。对于第 i 台机器而言,创建合金需要 composition[i][j] 份 j 类型金属。最初,你拥有 stock[i] 份 i 类型金属,而每购入一份 i 类型金属需要花费 cost[i] 的金钱。给你整数 n、k、budget,下标从 1 开始的二维数组 composition,两个下标从 1 开始的数组 stoc
2024-09-12 17:00:00 927 1
原创 【C++差分数组】1943. 描述绘画结果|1969
给你一个细长的画,用数轴表示。这幅画由若干有重叠的线段表示,每个线段有 独一无二 的颜色。给你二维整数数组 segments ,其中 segments[i] = [starti, endi, colori] 表示线段为 半开区间 [starti, endi) 且颜色为 colori 。线段间重叠部分的颜色会被 混合 。如果有两种或者更多颜色混合时,它们会形成一种新的颜色,用一个 集合 表示这个混合颜色。比方说,如果颜色 2 ,4 和 6 被混合,那么结果颜色为 {2,4,6} 。为了简化题目,你不需要
2024-09-12 07:00:00 1479 107
原创 【C++二分查找】911. 在线选举
给你两个整数数组 persons 和 times 。在选举中,第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的。对于发生在时刻 t 的每个查询,需要找出在 t 时刻在选举中领先的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。实现 TopVotedCandidate 类:TopVotedCandidate(int[] persons, int[] times) 使用 persons 和 times 数组初始化
2024-09-11 17:00:00 685
原创 【C++二分查找 滑动窗口】2831. 找出最长等值子数组
给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。如果子数组中所有元素都相等,则认为子数组是一个 等值子数组 。注意,空数组是 等值子数组 。从 nums 中删除最多 k 个元素后,返回可能的最长等值子数组的长度。子数组 是数组中一个连续且可能为空的元素序列。
2024-09-11 07:00:00 554
原创 【C#Mutex】 initiallyOwned错误引起的缺陷
临界区只能对同一个进程的不同线程同步,互斥量可以跨进程同步。典型应用场景:两个exe会操作同一个注册表项。
2024-09-10 11:56:44 2420
原创 【C++二分查找 贪心】1488. 避免洪水泛滥
你的国家有无数个湖泊,所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的,那么它就会装满水。如果第 n 个湖泊下雨前是 满的 ,这个湖泊会发生 洪水 。你的目标是避免任意一个湖泊发生洪水。给你一个整数数组 rains ,其中:rains[i] > 0 表示第 i 天时,第 rains[i] 个湖泊会下雨。rains[i] == 0 表示第 i 天没有湖泊会下雨,你可以选择 一个 湖泊并 抽干 这个湖泊的水。请返回一个数组 ans ,满足:ans.length == rains.length如果
2024-09-10 07:00:00 888
原创 【C++二分查找】1482. 制作 m 束花所需的最少天数
给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。
2024-09-09 17:00:00 1206
原创 【C++前缀和】3212. 统计 X 和 Y 频数相等的子矩阵数量|1672
给你一个二维字符矩阵 grid,其中 grid[i][j] 可能是 'X'、'Y' 或 '.',返回满足以下条件的子矩阵数量:包含 grid[0][0]'X' 和 'Y' 的频数相等。至少包含一个 'X'。
2024-09-09 07:00:00 2562 123
原创 【C++前缀和】2017. 网格游戏|1718
给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数。现在有两个机器人正在矩阵上参与一场游戏。两个机器人初始位置都是 (0, 0) ,目标位置是 (1, n-1) 。每个机器人只会 向右 ((r, c) 到 (r, c + 1)) 或 向下 ((r, c) 到 (r + 1, c)) 。游戏开始,第一个 机器人从 (0, 0) 移动到 (1, n-1) ,并收集路径上单元格的全部点数。对于路径上所有单元格 (r, c
2024-09-08 18:05:08 944 3
原创 【C++二分查找 拆位法】2411. 按位或最大的最小子数组长度
给你一个长度为 n 下标从 0 开始的数组 nums ,数组中所有数字均为非负整数。对于 0 到 n - 1 之间的每一个下标 i ,你需要找出 nums 中一个 最小 非空子数组,它的起始位置为 i (包含这个位置),同时有 最大 的 按位或运算值 。换言之,令 Bij 表示子数组 nums[i...j] 的按位或运算的结果,你需要找到一个起始位置为 i 的最小子数组,这个子数组的按位或运算的结果等于 max(Bik) ,其中 i
2024-09-08 17:00:00 802
喜缺全书算法册对应源码单元测试用例
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关注的人