- 博客(1100)
- 资源 (86)
- 收藏
- 关注
原创 回溯知识汇总
我对回溯的定义是不定层循环,此定义并不规范,但容易理解。回溯基本上用深度优先搜索实现,暂未发现反例。而深度优先搜索绝大部分是用递归实现。
2024-05-20 07:00:00 2108 39
原创 深度优先搜索汇总
扩展新的节点,不断递归执行这个过程,直到某个节点不能再扩展下一个节点为止。此时,则返回上一个节点重新寻找一个新的扩展节点。如此搜索下去,直到找到目标节点,或者搜索完所有节点为止。
2024-05-16 07:00:00 910 40
原创 【字典树 离线查询 深度优先】1938. 查询最大基因差
给你一棵 n 个节点的有根树,节点编号从 0 到 n - 1 。每个节点的编号表示这个节点的 独一无二的基因值 (也就是说节点 x 的基因值为 x)。两个基因值的 基因差 是两者的 异或和 。给你整数数组 parents ,其中 parents[i] 是节点 i 的父节点。如果节点 x 是树的 根 ,那么 parents[x] == -1 。给你查询数组 queries ,其中 queries[i] = [nodei, vali] 。对于查询 i ,请你找到 vali 和 pi 的 最大基因差 ,其中 p
2024-05-24 15:30:00 958 1
原创 【字典树(前缀树) 位运算】1803. 统计异或值在范围内的数对有多少
给你一个整数数组 nums (下标 从 0 开始 计数)以及两个整数:low 和 high ,请返回 漂亮数对 的数目。漂亮数对 是一个形如 (i, j) 的数对,其中 0
2024-05-24 07:00:00 720 5
原创 【字典树 最长公共前缀】1316. 不同的循环子字符串
给你一个字符串 text ,请你返回满足下述条件的 不同 非空子字符串的数目:可以写成某个字符串与其自身相连接的形式(即,可以写为 a + a,其中 a 是某个字符串)。例如,abcabc 就是 abc 和它自身连接形成的。
2024-05-23 17:00:00 616 4
原创 【字典树(前缀树)】1032. 字符流
设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。例如,words = ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 'a'、'x'、'y' 和 'z' ,你所设计的算法应当可以检测到 "axyz" 的后缀 "xyz" 与 words 中的字符串 "xyz" 匹配。按下述要求实现 StreamChecker 类:StreamChecker(String[] words) :构造函数,用字符串数组 words 初始化数据结构。bo
2024-05-22 17:00:00 1541
原创 【字典树(前缀树)】745. 前缀和后缀搜索
设计一个包含一些单词的特殊词典,并能够通过前缀和后缀来检索单词。实现 WordFilter 类:WordFilter(string[] words) 使用词典中的单词 words 初始化对象。f(string pref, string suff) 返回词典中具有前缀 pref 和后缀 suff 的单词的下标。如果存在不止一个满足要求的下标,返回其中 最大的下标 。如果不存在这样的单词,返回 -1 。
2024-05-22 07:00:00 884 6
原创 【图论 深度优先搜索 反证法 分类讨论】树的直径
有根树的深度:根到叶子节点的距离。有根数的搞定:叶子到根节点的距离。两者本质是一样,习惯不同而已。树的直径——就是树中距离最大的两点的距离。 以任意节点为根的最大深度。
2024-05-21 17:00:00 867 1
原创 【专利】一种光伏加工产品缺陷检测方法
本发明公开一种光伏加工产品缺陷检测方法,涉及产品检测领域。该光伏加工产品缺陷检测方法,所述缺陷检测方法包括如下步骤:步骤S1:设备启动并通过相机获取产品图像,将图像输入系统中进行处理;步骤S2:对图像进行边缘提取;步骤S3:确定缺陷检测区域;步骤S4:对缺陷进行定位;步骤S5:将缺陷区域分类;步骤S6:输出缺陷数据。该光伏加工产品缺陷检测方法结合边缘提取、确定检测区域、缺陷定位、多特征缺陷分类等方法,构建一种综合的光伏加工产品缺陷检测方法,这种方法能够准确地定位和分类不同类型的缺陷,为生产环节提供及时的反馈
2024-05-21 07:00:00 2056 12
原创 【数学 分类讨论 数学归纳法】3139. 使数组中所有元素相等的最小开销
给你一个整数数组 nums 和两个整数 cost1 和 cost2 。你可以执行以下 任一 操作 任意 次:从 nums 中选择下标 i 并且将 nums[i] 增加 1 ,开销为 cost1。选择 nums 中两个 不同 下标 i 和 j ,并且将 nums[i] 和 nums[j] 都 增加 1 ,开销为 cost2 。你的目标是使数组中所有元素都 相等 ,请你返回需要的 最小开销 之和。由于答案可能会很大,请你将它对 109 + 7 取余 后返回。
2024-05-20 17:00:00 932 2
原创 【状态机动态规划 组合数学】100298. 到达第 K 级台阶的方案数
给你有一个 非负 整数 k 。有一个无限长度的台阶,最低 一层编号为 0 。虎老师有一个整数 jump ,一开始值为 0 。虎老师从台阶 1 开始,虎老师可以使用 任意 次操作,目标是到达第 k 级台阶。假设虎老师位于台阶 i ,一次 操作 中,虎老师可以:向下走一级到 i - 1 ,但该操作 不能 连续使用,如果在台阶第 0 级也不能使用。向上走到台阶 i + 2jump 处,然后 jump 变为 jump + 1 。
2024-05-19 12:00:35 1001 3
原创 【动态规划状态压缩 组合数学】3149. 找出分数最低的排列
给你一个数组 nums ,它是 [0, 1, 2, ..., n - 1] 的一个排列 。对于任意一个 [0, 1, 2, ..., n - 1] 的排列 perm ,其 分数 定义为:score(perm) = |perm[0] - nums[perm[1]]| + |perm[1] - nums[perm[2]]| + ... + |perm[n - 1] - nums[perm[0]]|返回具有 最低 分数的排列 perm 。如果存在多个满足题意且分数相等的排列,则返回其中字典序最小的一个。
2024-05-19 07:00:00 569 1
原创 【动态规划 子集状态压缩 回溯】1723. 完成所有工作的最短时间
给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。返回分配方案中尽可能 最小 的 最大工作时间 。
2024-05-18 17:00:00 1614 6
原创 【子集状态压缩 动态规划】1655. 分配重复整数
给你一个长度为 n 的整数数组 nums ,这个数组中至多有 50 个不同的值。同时你有 m 个顾客的订单 quantity ,其中,整数 quantity[i] 是第 i 位顾客订单的数目。请你判断是否能将 nums 中的整数分配给这些顾客,且满足:第 i 位顾客 恰好 有 quantity[i] 个整数。第 i 位顾客拿到的整数都是 相同的 。每位顾客都满足上述两个要求。如果你可以分配 nums 中的整数满足上面的要求,那么请返回 true ,否则返回 false 。
2024-05-18 07:00:00 719 5
原创 【状态压缩 枚举 回溯】1601. 最多可达成的换楼请求数目
我们有 n 栋楼,编号从 0 到 n - 1 。每栋楼有若干员工。由于现在是换楼的季节,部分员工想要换一栋楼居住。给你一个数组 requests ,其中 requests[i] = [fromi, toi] ,表示一个员工请求从编号为 fromi 的楼搬到编号为 toi 的楼。一开始 所有楼都是满的,所以从请求列表中选出的若干个请求是可行的需要满足 每栋楼员工净变化为 0 。意思是每栋楼 离开 的员工数目 等于 该楼 搬入 的员工数数目。比方说 n = 3 且两个员工要离开楼 0 ,一个员工要离开楼 1
2024-05-17 15:30:00 940 3
原创 【回溯 状态压缩 枚举】2151. 基于陈述统计最多好人数
好人:该角色只说真话。坏人:该角色可能说真话,也可能说假话。给你一个下标从 0 开始的二维整数数组 statements ,大小为 n x n ,表示 n 个玩家对彼此角色的陈述。具体来说,statements[i][j] 可以是下述值之一:
2024-05-17 07:00:00 793 4
原创 【回溯 图论】2065. 最大化一张图中的路径价值
给你一张 无向 图,图中有 n 个节点,节点编号从 0 到 n - 1 (都包括)。同时给你一个下标从 0 开始的整数数组 values ,其中 values[i] 是第 i 个节点的 价值 。同时给你一个下标从 0 开始的二维整数数组 edges ,其中 edges[j] = [uj, vj, timej] 表示节点 uj 和 vj 之间有一条需要 timej 秒才能通过的无向边。最后,给你一个整数 maxTime 。合法路径 指的是图中任意一条从节点 0 开始,最终回到节点 0 ,且花费的总时间 不超
2024-05-16 17:00:00 1177 2
原创 【回溯】1255. 得分最高的单词集合
你将会得到一份单词表 words,一个字母表 letters (可能会有重复字母),以及每个字母对应的得分情况表 score。请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能够由 letters 里的字母拼写出的 任意 属于 words 单词子集中,分数最高的单词集合的得分。单词拼写游戏的规则概述如下:玩家需要用字母表 letters 里的字母来拼写单词表 words 中的单词。可以只使用字母表 letters 中的部分字母,但是每个字母最多被使用一次。单词表 words 中每个单词只能
2024-05-15 17:00:00 885 3
原创 【回溯】1240. 铺瓷砖
你是一位施工队的工长,根据设计师的要求准备为一套设计风格独特的房子进行室内装修。房子的客厅大小为 n x m,为保持极简的风格,需要使用尽可能少的 正方形 瓷砖来铺盖地面。假设正方形瓷砖的规格不限,边长都是整数。请你帮设计师计算一下,最少需要用到多少块方形瓷砖?
2024-05-15 07:00:00 626 5
原创 【回溯 代数系统】679. 24 点游戏
给定一个长度为4的整数数组 cards 。你有 4 张卡片,每张卡片上都包含一个范围在 [1,9] 的数字。您应该使用运算符 ['+', '-', '*', '/'] 和括号 '(' 和 ')' 将这些卡片上的数字排列成数学表达式,以获得值24。你须遵守以下规则:除法运算符 '/' 表示实数除法,而不是整数除法。
2024-05-14 17:00:00 846 3
原创 【专利】一种日志快速分析方法、设备、存储介质
[0001] 本申请涉及计算机技术领域,具体涉及一种日志快速分析方法、设备、存储介质。背景技术[0002] 一台工控机运行产生近百M纯文本日志,人工阅读需要若干天。除了节假日,工厂内部的工控机基本24小时运行。所有客户加起来,几千台电脑,每天产生天量的数据。[0003] 且不同的软件存在不同格式的日志,包括且不限于:和PLC通讯的用时、整个流程用时、接受的消息等。但绝大部分日志的数据,就变成电子垃圾进入回收站。工控机日志的处理存在于以下问题:
2024-05-14 07:00:00 2400 10
原创 【回溯 栈 代数系统 动态规划】282. 给表达式添加运算符
给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回 所有 能够得到 target 的表达式。注意,返回表达式中的操作数 不应该 包含前导零。
2024-05-13 17:00:00 651 7
原创 【回溯 字典树(前缀树)】212. 单词搜索 II
给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words, 返回所有二维网格上的单词 。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。
2024-05-12 17:00:00 583 4
原创 【图论 回溯 广度优先搜索】126. 单词接龙 II
按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> ... -> sk 这样的单词序列,并满足:每对相邻的单词之间仅有单个字母不同。转换过程中的每个单词 si(1
2024-05-12 10:07:56 865 1
原创 【回溯 网格 状态压缩】52. N 皇后 II
n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。
2024-05-11 15:00:00 1018 4
原创 【回溯 状态压缩 深度优先】37. 解数独
编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。
2024-05-11 07:00:00 791 3
原创 【二分查找 滑动窗口】100257找出唯一性数组的中位数
给你一个整数数组 nums 。数组 nums 的 唯一性数组 是一个按元素从小到大排序的数组,包含了 nums 的所有非空子数组中不同元素的个数。换句话说,这是由所有 0
2024-05-10 17:00:00 703 3
原创 【最大公约数 唯一分解定理 调和级数】2862. 完全子集的最大元素和
给你一个下标从 1 开始、由 n 个整数组成的数组。你需要从 nums 选择一个 完全集,其中每对元素下标的乘积都是一个 完全平方数,例如选择 ai 和 aj ,i * j 一定是完全平方数。返回 完全子集 所能取到的 最大元素和 。
2024-05-10 07:00:00 1406 2
原创 【最大公约 调和级数 并集查找】2709. 最大公约数遍历
给你一个下标从 0 开始的整数数组 nums ,你可以在一些下标之间遍历。对于两个下标 i 和 j(i != j),当且仅当 gcd(nums[i], nums[j]) > 1 时,我们可以在两个下标之间通行,其中 gcd 是两个数的 最大公约数 。你需要判断 nums 数组中 任意 两个满足 i < j 的下标 i 和 j ,是否存在若干次通行可以从 i 遍历到 j 。如果任意满足条件的下标对都可以遍历,那么返回 true ,否则返回 false 。
2024-05-09 17:00:00 899 2
原创 【组合数学】2842. 统计一个字符串的 k 子序列美丽值最大的数目
给你一个字符串 s 和一个整数 k 。k 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是 唯一 的,也就是说每个字符在子序列里只出现过一次。定义 f(c) 为字符 c 在 s 中出现的次数。k 子序列的 美丽值 定义为这个子序列中每一个字符 c 的 f(c) 之 和 。
2024-05-08 17:00:00 1444 4
原创 【最大公约数 并集查找 调和级数】1998. 数组的最大公因数排序
给你一个整数数组 nums ,你可以在 nums 上执行下述操作 任意次 :如果 gcd(nums[i], nums[j]) > 1 ,交换 nums[i] 和 nums[j] 的位置。其中 gcd(nums[i], nums[j]) 是 nums[i] 和 nums[j] 的最大公因数。如果能使用上述交换方式将 nums 按 非递减顺序 排列,返回 true ;否则,返回 false 。
2024-05-07 17:00:00 772 2
原创 【状态压缩 动态规划 数论】1799. N 次操作后的最大分数和
给你 nums ,它是一个大小为 2 * n 的正整数数组。你必须对这个数组执行 n 次操作。在第 i 次操作时(操作编号从 1 开始),你需要:选择两个元素 x 和 y 。获得分数 i * gcd(x, y) 。将 x 和 y 从 nums 中删除。请你返回 n 次操作后你能获得的分数和最大为多少。函数 gcd(x, y) 是 x 和 y 的最大公约数。
2024-05-07 07:00:00 933 9
原创 【深度优先搜索】1766. 互质树
给你一个 n 个节点的树(也就是一个无环连通无向图),节点编号从 0 到 n - 1 ,且恰好有 n - 1 条边,每个节点有一个值。树的 根节点 为 0 号点。给你一个整数数组 nums 和一个二维数组 edges 来表示这棵树。nums[i] 表示第 i 个点的值,edges[j] = [uj, vj] 表示节点 uj 和节点 vj 在树中有一条边。当 gcd(x, y) == 1 ,我们称两个数 x 和 y 是 互质的 ,其中 gcd(x, y) 是 x 和 y 的 最大公约数 。从节点 i 到
2024-05-06 17:00:00 1526 4
原创 【深度优先搜索 图论 树】2872. 可以被 K 整除连通块的最大数目
给你一棵 n 个节点的无向树,节点编号为 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边。同时给你一个下标从 0 开始长度为 n 的整数数组 values ,其中 values[i] 是第 i 个节点的 值 。再给你一个整数 k 。你可以从树中删除一些边,也可以一条边也不删,得到若干连通块。一个 连通块的值 定义为连通块中所有节点值之和。如果所有连通块的值都可以被 k 整除,
2024-05-06 07:00:00 1876 87
原创 【调和级数 并集查找】1627. 带阈值的图连通性
有 n 座城市,编号从 1 到 n 。编号为 x 和 y 的两座城市直接连通的前提是: x 和 y 的公因数中,至少有一个 严格大于 某个阈值 threshold 。更正式地说,如果存在整数 z ,且满足以下所有条件,则编号 x 和 y 的城市之间有一条道路:x % z == 0y % z == 0z > threshold给你两个整数 n 和 threshold ,以及一个待查询数组,请你判断每个查询 queries[i] = [ai, bi] 指向的城市 ai 和 bi 是否连通(即,它们之间是
2024-05-04 17:00:00 811 5
原创 【多数组合 数学 字符串】2514. 统计同位异构字符串数目
给你一个字符串 s ,它包含一个或者多个单词。单词之间用单个空格 ' ' 隔开。如果字符串 t 中第 i 个单词是 s 中第 i 个单词的一个 排列 ,那么我们称字符串 t 是字符串 s 的同位异构字符串。比方说,"acb dfe" 是 "abc def" 的同位异构字符串,但是 "def cab" 和 "adc bef" 不是。请你返回 s 的同位异构字符串的数目,由于答案可能很大,请你将它对 109 + 7 取余 后返回。
2024-05-04 07:00:00 907 1
本博客配套流程图,会经常更新
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
《闻缺陷则喜》之《主册》
2022-09-10
简单的C#类 生成对应的C#类
2021-11-07
保存文件的同时删除文件,保存用时会略微升高
2021-10-11
多线程样例一 读写参数文件
2021-09-09
《闻缺陷则喜》之《软件开发的那些人》 20230917
2021-08-09
作为公共组软件工程师如何工作
2019-02-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人