- 博客(32)
- 收藏
- 关注
原创 Ubuntu22.04-Cuda12.1 安装 Detectron2
本文记录了在Ubuntu 22.04+CUDA 12.1环境下配置Detectron2的过程。作者尝试多种方法后,通过Claude的建议成功编译。关键步骤包括:创建conda环境(python3.10),安装匹配的PyTorch(2.3.1)和CUDA(12.1)版本,以及两种解决安装报错的方案(添加--no-build-isolation参数或创建pyproject.toml文件)。文中特别指出PyTorch和CUDA版本对应的重要性,并分享了成功的配置经验,欢迎其他用户交流不同版本的环境配置问题。
2025-10-21 12:36:11
380
1
原创 Leetcode-3488距离最小相等元素查询
本文讨论了解决LeetCode问题3488"距离最小相等元素查询"的二分查找方法。作者通过将数组复制成循环数组,并用哈希表存储元素及其索引位置。在查询时比较左右相邻元素的距离,但指出该方法容易混淆数组长度和下标向量长度,导致调试困难。最终实现了一个C++解决方案,通过二分查找定位最近元素,同时处理了边界情况。作者反思该方法较为笨重,建议参考更简洁的"哨兵"实现方式。文章总结了处理循环数组和哈希表结合二分查找的实践经验。
2025-08-06 15:04:54
208
原创 Leetcode-2080区间内查询数字的频率
本文介绍了一个区间数字频率查询的实现方案。作者采用暴力遍历法,使用哈希表缓存查询结果以提高效率。代码定义了一个RangeFreqQuery类,通过遍历给定区间[left,right]统计目标值value的出现次数。虽然作者意识到该方法未利用二分查找思想,但通过哈希表存储查询结果(以"left.right.value"为键)避免了重复计算,使得该方案能够通过测试。这种实现方式简单直接,但可能存在优化空间。
2025-08-05 19:19:57
253
原创 Leetcode-3152 特殊数组 II
本文讨论了LeetCode 3152题"特殊数组II"的解法。作者最初尝试使用位运算判断相邻元素奇偶性,但发现2&4结果为0会误判,转而采用if-else判断。解法使用前缀和数组cnt,其中cnt[0]=0,cnt[1]=1,通过遍历数组统计满足条件的相邻元素对。对于每个查询区间,通过比较前缀和差值与区间长度差来判断是否所有相邻元素均满足条件。C++实现中,当查询区间长度为1时直接返回true,否则通过比较cnt数组差值判断结果。时间复杂度为O(n+m),空间复杂度为O(n)。
2025-07-29 20:48:16
255
原创 Leetcode-3361两个字符串的切换距离
摘要:本文讨论了解决字符串转换距离问题的优化方法。作者最初尝试直接处理环形数组但陷入复杂判断,后借鉴"化曲为直"思想,通过复制数组简化问题。算法使用两个前缀和数组(nextCnt和prevCnt)分别记录正向和反向转换的累计代价,将字符转换为0-25的数值简化比较。对于每个字符,比较正向和反向转换的最小代价进行累加。时间复杂度为O(n),空间复杂度O(1)。该方法有效避免了环形结构的复杂处理,通过前缀和优化提升了计算效率。
2025-07-29 16:31:00
582
原创 Leetcode-2559统计范围内的元音字符串数
该代码使用前缀和技巧高效统计给定查询范围内的元音字符串数量。首先构建前缀和数组cnt,其中每个元素表示前i个字符串中符合条件(首尾字符均为元音)的数量。对于每个查询[l,r],通过cnt[r+1]-cnt[l]快速计算区间结果。时间复杂度为O(n+m),其中n为字符串数量,m为查询数量。这种方法避免了重复遍历,显著提高了查询效率。
2025-07-28 09:56:00
216
原创 Leetcode-3427变长子数组求和
该文章介绍了使用前缀和技巧解决变长子数组求和问题。通过构建长度为n+1的前缀和数组cnt,其中cnt[i+1]表示前i个元素的和,可以快速计算任意子数组的和。具体实现时,对于数组nums的每个元素nums[i],其贡献值为cnt[i+1]-cnt[max(0,i-nums[i])],最终将所有贡献值累加得到结果。文中给出了C++代码示例,展示了如何实现这一算法。该方法避免了边界条件讨论,时间复杂度为O(n)。
2025-07-27 12:43:47
1810
原创 Leetcode-303区域和检索 - 数组不可变
摘要:文章记录了作者学习前缀和和双指针算法的过程。通过LeetCode 303题(区域和检索)实践前缀和的应用,分享了C++实现代码,讨论了将cnt[0]初始化为1的巧妙之处。同时反思了面向对象基础知识和STL中vector空间分配的问题,认识到需要加强这些基础知识的学习。
2025-07-26 14:39:45
137
原创 Leetcode-2537统计好子数组的数目
本文讨论LeetCode 2537题"统计好子数组的数目"的两种解法。第一种解法使用滑动窗口,维护窗口中元素出现的次数,当满足条件时累加len-right个子数组。第二种解法来自灵神,核心在于pairs+=cnt[x]++的巧妙计数方式,当满足条件时累加left值。两种方法主要区别在于满足条件时如何统计子数组数目:前者采用总长度减去右边界,后者直接累加左边界。作者通过比较两种方法,思考了滑动窗口处理左侧元素的逻辑差异,有助于理解不同计数方式的本质。两种解法都使用哈希表记录元素出现次数,通
2025-07-25 20:34:40
209
原创 Leetcode-2799统计完全字数组的数目
摘要:本文提出了一种滑动窗口算法来计算数组中完全子数组的数量(完全子数组指包含所有不同元素的子数组)。通过使用哈希集合统计原数组元素,并维护一个窗口集合来跟踪当前窗口元素,当窗口包含全部元素时累加结果。时间复杂度为O(n),空间复杂度O(m),其中n为数组长度,m为不同元素数量。代码实现使用两个集合和计数数组来高效维护窗口状态。
2025-07-25 13:35:02
351
原创 Leetcode-3325字符至少出现 K 次的子字符串 I
摘要:本文介绍了一种滑动窗口算法,用于统计字符串中出现至少K次字符的子字符串数量。算法通过维护一个字符计数数组和左右指针,当某字符出现次数达到K次时,计算有效子字符串数并移动左指针。该解法与Leetcode 2962题目类似,时间复杂度为O(n)。代码使用C++实现,通过遍历字符串并动态调整窗口大小来优化计算。
2025-07-25 12:58:18
181
原创 Leetcode-2962统计最大元素出现至少 K 次的子数组
本文介绍了一种滑动窗口算法,用于统计数组中出现最大元素至少k次的子数组数量。算法首先确定数组中的最大值,然后使用双指针维护一个滑动窗口,统计窗口内最大值的出现次数。当最大值出现次数达到k时,计算满足条件的子数组数量并累加。时间复杂度为O(n),空间复杂度为O(1)。该解法与LeetCode 1358题类似,但只需维护单个元素的计数。
2025-07-24 18:27:15
190
原创 Leetcode-1358包含所有三种字符的字符串数目
本文介绍了一种使用滑动窗口算法解决"包含所有三种字符的子字符串数目"问题的方法。通过维护左右指针定义的窗口和计数数组来记录a、b、c的出现次数,当窗口内包含所有三种字符时,可以直接计算有效子字符串数量并累加结果。关键步骤是右指针扩展窗口,当满足条件时固定右指针,累加结果并移动左指针收缩窗口。该方法时间复杂度为O(n),空间复杂度O(1),能高效解决问题。
2025-07-23 20:25:48
325
原创 Leetcode-2875无限数组的最短子数组
本文讨论了LeetCode 2875题"无限数组的最短子数组"的解题思路。作者分析该题与209和1658题相似但有区别,重点指出两个易错点:数组扩容导致MLE和整数溢出问题。通过比较target与数组和sum的关系,提出先处理target%sum的部分,再计算完整周期数n=target/sum的方法。最终给出C++代码实现,使用模运算避免数组扩容,用long long防止溢出,通过滑动窗口在2倍数组长度内寻找最短子数组,时间复杂度为O(n)。若找不到解则返回-1。
2025-07-23 19:06:04
616
原创 Leetcode-1234替换子串得到平衡字符串
【滑动窗口解决字符串平衡问题】该题要求通过替换子串使字符串中四种字符数量平衡。解法使用滑动窗口技术:1.统计字符频率后,若已平衡直接返回0;2.否则移动右指针减少计数,当窗口外字符均不超过目标值时,收缩左指针并更新最小窗口长度。时间复杂度O(n),空间O(1)。代码实现简洁,通过字母ASCII值映射进行高效计数,最终返回需要替换的最小窗口大小。
2025-07-23 12:52:43
164
原创 Leetcode-1两数之和
本文分享了LeetCode两数之和问题的C++解法。作者采用哈希表优化查找效率,遍历数组时检查目标值与当前元素的差值是否存在于哈希表中,若存在则返回两数索引,否则将当前元素存入哈希表。代码中使用了unordered_map作为哈希表实现,时间复杂度为O(n)。虽然理论上循环内必能返回结果,但编译器要求方法末尾必须有return语句。
2025-07-21 21:58:07
345
原创 Leetcode-2904最短且字典序最小的美丽子字符串
摘要:作者分享了解决LeetCode 2904题(最短字典序最小美丽子字符串)的经历,坦言使用的方法较笨拙,未能很好运用滑动窗口技巧。提供的C++代码通过统计'1'的数量、维护临时字符串和比较长度来寻找最优解,但存在面向结果编程的倾向。代码主要处理字符串截取、长度比较和字典序判断,最终返回符合条件的子字符串。作者对解题过程表示不太满意,认为仍有改进空间。
2025-07-16 22:40:57
187
原创 Leetcode-1658将 x 减到 0 的最小操作数
这道题采用逆向思维,将"求两端最短序列和为x"转化为"求最长连续子串和为sum-x"。使用滑动窗口法遍历数组,维护窗口和cnt。当cnt超过目标值时收缩左边界,遇到等于目标值时记录最大窗口长度。最终结果即为数组长度减去最大窗口长度,若无解返回-1。时间复杂度O(n),空间复杂度O(1)。
2025-07-15 18:21:58
212
原创 Leetcode-209长度最小的子数组
摘要:讲述了作者中午打车去博物馆却遇到闭馆的倒霉经历,同时提醒大家注意防暑。在编程学习方面,作者表示对1658题(将x减到0的最小操作数)毫无头绪,转而练习209题(长度最小的子数组),参考了灵神的讲解后,分享了用滑动窗口方法实现的C++代码。代码展示了如何寻找满足条件的最短连续子数组长度。
2025-07-14 16:59:04
211
原创 Leetcode-1004最大连续1的个数 III
摘要:本文分享了一道滑动窗口算法题(LeetCode 1004)的解题过程。作者在理解灵神思路后仍采用自己的方法实现,用C++编写了寻找最多包含K个0的最大连续1序列的代码。通过维护左右指针和计数器,在遍历数组时动态调整窗口大小,记录最大有效长度。代码处理了遇到0时是否消耗K额度的情况,并在窗口收缩时正确更新计数器。最终返回滑动窗口过程中的最大长度值。
2025-07-13 23:52:45
158
原创 LeetCode-2024考试的最大困扰度
摘要:本文讨论了一道关于滑动窗口算法的问题,解决字符串中最大连续相同字符的问题。作者发现当T和F数量相同时原有解法可能出错,最终采用对T和F各遍历一次的解决方案。文章分享了一个C++实现,通过维护窗口内字符计数和修改次数来求解,并处理了边界情况。代码展示了如何通过两次滑动窗口遍历分别统计T和F的最大连续长度,最后返回结果时考虑了修改次数k的限制。
2025-07-12 23:53:29
240
原创 Leetcode-2958最多 K 个重复元素的最长子数组
摘要: 本文探讨了基于滑动窗口的算法,解决最多K个重复元素的最长子数组问题(类似LeetCode 2958)。通过维护无序哈希表记录元素频次,动态调整窗口边界:当元素频次超过K时,左移左指针缩减窗口;否则右移右指针扩展窗口,并持续更新最大子数组长度。C++实现中,利用unordered_map计数,时间复杂度为O(n),空间复杂度O(m)(m为元素种类)。代码核心逻辑为双指针协同遍历,确保窗口内元素频次始终≤K,最终返回最大合法窗口长度。
2025-07-11 23:20:31
516
原创 Leetcode-1695删除子数组的最大得分
本文介绍了一种使用滑动窗口算法解决「最大唯一子数组和」问题的方法。该解法维护一个窗口,通过集合检测重复元素:当右边界元素未重复时扩展窗口并更新最大值;遇到重复元素则收缩左边界直到消除重复。时间复杂度为O(n),空间复杂度O(n)。代码实现了窗口滑动过程中的动态求和与最大值记录,适用于类似「无重复字符最长子串」的问题场景。
2025-07-11 13:08:20
247
原创 Leetcode-904水果成篮
摘要:本文分享了一道LeetCode滑动窗口算法题(904.水果成篮)的解题思路。作者通过维护一个最多包含两种水果类型的窗口,使用无序map记录水果类型及其数量,当遇到第三种类型时移动左指针调整窗口。该解法与类似题目(每个字符最多出现两次的最长子字符串)存在区别。文章提供了C++代码实现,并讨论了题目理解过程中的困难。
2025-07-10 23:12:05
438
原创 Leetcode-1208尽可能使字符串相等
摘要:文章介绍了LeetCode上"尽可能使字符串相等"问题的解法。通过计算两个字符串对应字符差值的绝对值数组,使用双指针滑动窗口技术来寻找满足成本限制的最长子串。核心思路是维护窗口内元素总和不超过maxCost,通过移动左右指针动态调整窗口大小,同时记录最大窗口长度。提供的C++代码实现了这一算法,时间复杂度为O(n),空间复杂度为O(n)。
2025-07-09 16:22:48
232
原创 Leetcode-1493删掉一个元素以后全为 1 的最长子数组
摘要:本文介绍了一道LeetCode滑动窗口题目,要求在二进制数组中删除一个元素后找到最长连续1的子数组。主要思路是维护一个窗口,记录遇到0的次数。当遇到第一个0时继续扩展窗口,遇到第二个0时调整窗口左边界。使用计数器记录1的数量,最终返回最大值。C++实现中考虑了全1数组的特殊情况,时间复杂度为O(n)。代码展示了窗口滑动和条件判断的核心逻辑,适用于类似子数组问题。
2025-07-08 16:53:11
202
原创 Leetcode-3090每个字符最多出现两次的最长子字符串
本文分享了一道滑动窗口算法题的解法,题目要求找到字符串中每个字符最多出现两次的最长子串。作者使用无序map记录字符频率,通过双指针维护窗口边界。当右指针字符出现次数不足2次时扩张窗口,否则移动左指针收缩窗口。作者反思代码复杂度较高,因不熟悉unordered_map的int初始值(为0)而增加了多余判断。该解法时间复杂度O(n),空间复杂度O(字符集大小)。
2025-07-08 14:01:35
138
原创 Leetcode-03无重复字符的最长子串
本文介绍了利用滑动窗口算法解决LeetCode无重复字符的最长子串问题(题号3)。作者参考B站up主红桃A士的视频思路,用C++实现了一个解决方案。
2025-07-08 00:03:31
266
原创 获取shp文件,使用ArcMap进行栅格裁剪与波段合成
因为某种需要,需要处理重庆主城区的遥感影像然后进行监督分类。什么数据都没有,只能自己下载。
2023-12-25 10:58:36
2042
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅