- 博客(205)
- 资源 (2)
- 收藏
- 关注
原创 最终分配算法【论文材料】
本文提出了一种针对TDM(时分复用)网络资源分配的最终优化算法。算法根据网络负载情况分为平衡和不平衡两种处理方式:对于平衡情况,根据各边TDM值按比例分配剩余资源,通过公式推导确保资源分配合理性;对于不平衡情况,优先为TDM值较大的边分配资源,通过设置阈值(与穿过边的网络数相关)来选择性分配,并给出具体分配示例。两种方案均保证分配的TDM值满足资源约束条件(倒数和不大于1),有效优化了网络资源利用率。
2025-07-19 20:19:22
950
原创 程序的更新总结
摘要 软件更新主要分为六大类型:全量更新替换整个应用,适合大版本迭代;增量更新下载差异文件,节省带宽;热更新动态加载代码,无需重启;静默更新自动后台完成;强制更新要求用户必须升级;模块化更新按需升级独立功能。处理运行程序更新时,可采用标记文件重启替换或版本号文件夹切换策略。不同类型在更新粒度、用户干扰和技术复杂度上各有特点,需根据实际场景选择合适方案。
2025-06-26 20:17:32
867
原创 【项目小技巧】【C++】编写日志函数
这篇文章介绍了一个基于C++实现的线程安全日志系统。该系统采用单例模式设计,支持四种日志级别(DEBUG/INFO/WARNING/ERROR),可配置控制台和文件两种输出方式。主要功能包括:通过SetLogLevel()设置日志过滤级别,通过SetConsoleOutput()和SetFileOutput()启用/禁用不同输出渠道,提供便捷宏定义进行日志记录。实现上使用了mutex保证线程安全,支持宽字符,并自动处理日志文件打开/关闭操作。该系统可作为基础组件集成到其他项目中,方便开发人员记录和管理日志信
2025-06-26 20:15:47
418
原创 K-SpecPart: Supervised Embedding Algorithms and Cut Overlay for Improved ...【2024 TCAD】
本文提出K-SpecPart,一种改进超图划分的监督谱框架,解决了现有多级划分器在全局结构考虑不足和局部最优风险方面的局限性。通过计算广义特征向量和监督降维技术生成全局感知的顶点嵌入,并结合切割叠加聚类整合多个划分解。实验显示,K-SpecPart在二分问题上比前作SpecPart提升15%切割质量,多路划分时对小K值改善达20%,对大K值仍保持2%优势,超越hMETIS和KaHyPar等领先划分器。该工作扩展了谱图理论在多级划分中的应用,为超图划分提供了新思路。
2025-06-08 23:56:36
753
1
原创 NC28 最小覆盖子串【牛客网】
摘要:本文介绍了最小覆盖子串问题的解法。通过滑动窗口和哈希表技术,在字符串S中寻找包含字符串T所有字符的最短子串。算法先统计T的字符频率,然后使用双指针构建滑动窗口,当窗口包含T所有字符时收缩左边界寻找最短子串。时间复杂度为O(|S|+|T|),空间复杂度为O(|T|)。代码实现中通过维护字符计数和类型数来判断窗口状态,最终返回最短覆盖子串或空字符串。
2025-06-04 15:17:24
883
原创 22. 括号生成【 力扣(LeetCode) 】
本文介绍了生成有效括号组合的算法。题目要求给定数字n,生成所有可能的n对有效括号组合。采用回溯算法结合剪枝策略的解法:定义回溯函数dfs,当左右括号用完时记录结果;若剩余左括号多于右括号则剪枝;递归尝试放置左括号和右括号。算法时间复杂度O(2^n),空间复杂度O(n)。参考代码展示了具体实现,通过维护字符串状态进行深度优先搜索,最终返回所有有效括号组合。
2025-06-04 14:58:00
465
原创 52. N 皇后 II【 力扣(LeetCode) 】
N皇后问题要求计算在n×n棋盘上放置n个皇后且互不攻击的方案数。本文提出了一种基于回溯和剪枝的解法,通过逐行放置皇后并标记受影响的列和斜线,避免重复计算。关键点在于使用辅助数组标记不可放置区域,并通过递归实现深度优先搜索。该方法时间复杂度为O(n!),空间复杂度为O(n)。代码实现了该算法,通过Set函数动态更新棋盘状态,并在递归过程中统计有效解的数量。测试用例验证了算法正确性,适用于1≤n≤9的棋盘规模。
2025-06-03 19:34:48
434
原创 Improving Coarsening Schemes for Hypergraph Partitioning by Exploiting Community Structure【2017 SEA】
本文提出了一种改进的多级超图划分方法,通过在粗化阶段引入社区结构全局信息来提升划分质量。作者采用二分图表示和模块度最大化进行社区检测,定义了三种图边权重方案以适应不同超图类型。将该方法集成到KaHyPar划分器后,在VLSI设计、SAT求解等领域的294个超图上进行测试。实验结果表明,新方法在初始划分、平均解质量和最优解质量上均优于原始算法,且运行时间相当。根据超图密度自适应选择权重方案可获得最佳效果。该方法为超图划分提供了新的研究思路,实现了质量提升与效率的平衡。
2025-06-03 11:11:44
1228
原创 本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
本文介绍了Ollama的安装及DeepSeek模型的使用方法。首先说明Ollama官方下载缓慢的问题,提供了两种解决方案(迅雷下载或第三方资源)。详细步骤包括:1)安装验证Ollama;2)配置环境变量更改模型下载路径;3)根据电脑配置选择合适版本的DeepSeek模型;4)通过命令行或第三方软件(如Chatbox AI)调用模型。文章还提供了模型选择建议(显存/内存与模型大小匹配原则)以及API接口文档参考,帮助用户完成本地AI模型的部署和使用。
2025-06-02 16:50:15
2033
原创 39. 组合总和【 力扣(LeetCode) 】
本文介绍了LeetCode 39题"组合总和"的解法。题目要求在无重复元素的整数数组中找出所有和为target的不同组合,每个数字可重复使用。解题采用回溯+剪枝算法:先将数组排序以便剪枝优化,然后使用深度优先搜索遍历所有可能组合。当当前元素总和等于目标值时保存结果,并在遍历过程中通过提前终止不满足条件的搜索路径来提高效率。代码实现了这一思路,时间复杂度为O(n^target),空间复杂度为O(target)。该解法能够有效地找出所有符合条件的组合。
2025-06-02 16:47:28
589
原创 HJ85 最长回文子串【牛客网】
问题要求找出给定字符串中最长的回文子串长度。采用中心扩展法,通过遍历字符串中的每个字符作为中心点,向两边扩展判断是否为回文。对于奇数和偶数长度的回文分别处理,记录最大长度。时间复杂度为O(n²),空间复杂度O(1)。参考代码实现了该算法,输入字符串后输出最长回文子串的长度。
2025-05-31 16:36:17
453
原创 674. 最长连续递增序列【 力扣(LeetCode) 】
题目要求找到数组中最长的连续递增子序列的长度。使用双指针法遍历数组,当发现非递增元素时记录当前递增序列长度并重置起始位置。例如,数组[1,3,5,4,7]的最长连续递增序列是[1,3,5],长度为3。时间复杂度为O(n),空间复杂度为O(1)。
2025-05-31 16:02:58
270
原创 77. 组合【 力扣(LeetCode) 】
题目给定整数n和k,要求返回[1,n]范围内所有可能的k个数的组合。采用回溯+剪枝方法,通过递归实现元素的选择与不选,当组合长度达到k时记录结果,剩余元素不足时提前剪枝优化。时间复杂度为O(C(n,k)),空间复杂度O(n)。测试用例验证了算法的正确性。
2025-05-30 16:21:51
623
原创 面试题 08.08. 有重复字符串的排列组合【 力扣(LeetCode) 】
本文介绍了使用回溯法解决有重复字符的字符串排列组合问题。题目要求生成给定字符串的所有不重复排列,测试用例展示了输入输出示例。解题核心思路是通过深度优先搜索(DFS)进行回溯,利用哈希表记录已使用字符来避免重复排列。代码实现中,DFS函数递归构建所有可能的排列,当字符被固定时记录结果,并通过交换字符位置和状态恢复来遍历所有组合。该算法时间复杂度为O(n!),空间复杂度为O(n),适用于长度1到9的字符串。
2025-05-30 16:10:41
444
原创 1614. 括号的最大嵌套深度【 力扣(LeetCode) 】
摘要: 题目要求计算有效括号字符串的最大嵌套深度。通过遍历字符串,遇到左括号时计数加1并更新最大值,遇到右括号时计数减1。时间复杂度O(n),空间复杂度O(1)。例如输入"(1+(2*3)+((8)/4))+1"时,数字8位于3层嵌套中,输出3。该方法利用简单的计数器高效解决了问题。
2025-05-29 20:42:05
600
原创 NC52 有效括号序列【牛客网】
该文章介绍了如何判断括号序列是否有效的问题。使用栈数据结构进行匹配:左括号压栈,遇到右括号时弹出栈顶元素并检查是否匹配。通过哈希表存储括号对映射关系简化判断逻辑。遍历完字符串后,若栈空则说明全部匹配,否则无效。算法的时间和空间复杂度均为O(n)。提供了C++实现代码,利用vector模拟栈操作,确保高效处理各种括号组合情况。
2025-05-29 20:26:35
369
原创 HJ68 成绩排序【牛客网】
这是一道关于成绩排序的编程题目,要求按照指定方式排序并保持稳定性。解题思路是使用C++的stable_sort()函数配合lambda表达式实现自定义比较,根据输入标志位决定升序或降序。算法时间复杂度为O(nlogn),空间复杂度O(n)。参考代码通过vector存储学生数据,利用stable_sort的稳定性特点完成排序,最后输出结果。该解法简洁高效,适合处理这类需要稳定排序的场景。
2025-05-28 15:54:22
364
原创 NC37 合并区间【牛客网】
文章摘要: 本文介绍了合并区间问题的解法。题目要求将重叠或相邻的区间合并。解决方案使用一个足够大的数组(200001大小),将区间起始点作为索引存储对应的结束点。遍历所有区间时,更新每个起始点对应的最大结束点。然后再次遍历数组,遇到非-1值时开始合并区间,不断更新结束点至最大范围,直到完成合并并将结果存入答案。该方法的时间复杂度和空间复杂度均为O(val),其中val是区间可能的最大值。
2025-05-28 15:45:25
717
原创 HJ27 查找兄弟单词【牛客网】
这篇文章介绍了如何查找兄弟单词的算法思路和实现代码。题目要求在一组单词中找出与目标单词字符组成相同但顺序不同的兄弟单词,并按字典序输出第k个符合条件的单词。 解题核心步骤包括: 统计目标单词各字符数量作为基准 遍历单词序列,通过字符计数比较筛选兄弟单词(排除目标单词本身) 对符合条件的兄弟单词进行排序 按要求输出结果 代码实现使用了计数器和排序算法,时间复杂度为O(nlogn),空间复杂度为O(n),适用于处理中等规模的输入数据。
2025-05-27 20:13:53
709
原创 HJ25 数据分类处理【牛客网】
题目要求对规则集(R)排序去重后,匹配数据集(I)中符合规则的字符串。解题思路:先对规则集排序去重,然后遍历数据集检查每个元素是否包含规则子串。匹配结果按格式输出:总匹配数、各规则对应的匹配项及其位置。时间复杂度为O(|R|×|S|),空间复杂度O(|R|×|S|)。参考代码使用双指针去重,自定义匹配函数,并按要求格式化输出结果。
2025-05-27 19:57:00
1786
原创 Engineering a direct k-way Hypergraph Partitioning Algorithm【2017 ALENEX】
本文提出了一种高效的多层超图划分算法KaHyPar,能够直接进行k路划分而无需递归二分。算法创新性地融合了基于min-hash的顶点聚类、改进的收缩方法以及自适应局部搜索策略。通过引入顶点指纹技术优化邻域更新范围,开发更快速的收缩算法,并采用多队列结构将FM启发式算法扩展到k路情形。实验表明,KaHyPar在求解质量和速度上均优于现有工具hMetis和PaToH,特别在处理连接权重等目标函数时表现突出。该算法有效解决了大型超边处理、平衡约束满足等关键问题,为超图划分提供了新的高效解决方案。
2025-05-26 23:49:02
1600
原创 k-way Hypergraph Partitioning via n-Level Recursive Bisection【2016 ALENEX】
本文提出了一种高效的多级超图划分算法KaHyPar,通过顶点收缩、组合初始划分和精细化优化三个阶段实现。算法创新性地采用缓存技术、懒更新策略和自适应不平衡预算分配,显著提升了运行效率和质量。实验基于310个来自VLSI、SAT求解等领域的超图,结果表明该算法比hMetis等工具快两个数量级,且划分质量更优。关键技术包括基于评分的顶点收缩、多种初始划分算法组合以及递归二分中的增益优化,为超图划分提供了高性能解决方案。
2025-05-26 23:33:34
1303
原创 HJ14 字符串排序【牛客网】
该题目要求对输入的多个字符串进行字典序排序。解题思路是编写自定义比较函数cmp,比较字符串的字符顺序和长度,然后使用sort函数进行排序。时间复杂度为O(nlogn * 平均字符串长度),空间复杂度为O(n * 平均字符串长度)。代码实现包括输入字符串、排序处理和输出结果三个步骤。
2025-05-24 17:02:00
571
原创 HJ8 合并表记录【牛客网】
题目要求合并相同键的记录值,使用map结构存储键值对。遍历输入时,若键已存在则累加值,否则插入新键值对。最后按键升序输出结果。时间复杂度O(nlogn),空间复杂度O(n)。
2025-05-24 16:39:49
566
原创 HJ106 字符逆序【牛客网】
本文介绍了如何实现字符串逆序输出的方法。题目要求将输入的字符串逆序输出,测试用例展示了不同输入情况下的预期结果。解题思路包括使用 getline 函数读取整行字符串,并通过倒序遍历字符串实现逆序输出。参考代码展示了具体的实现方式,时间复杂度为 O(n),空间复杂度为 O(1)。代码通过从字符串末尾开始遍历,逐个字符输出,最终完成逆序操作。
2025-05-23 20:51:40
361
原创 300. 最长递增子序列【 力扣(LeetCode) 】
本文介绍了解决“最长递增子序列”问题的两种方法:动态规划和贪心算法结合二分查找。动态规划方法通过从后向前遍历数组,计算每个位置的最长递增子序列长度,时间复杂度为O(n²),空间复杂度为O(n)。贪心算法结合二分查找则通过维护一个递增序列,利用二分查找优化插入或替换操作,时间复杂度为O(n log n),空间复杂度为O(n)。两种方法各有优劣,动态规划易于理解,而贪心算法在效率上更优。
2025-05-23 20:41:05
1502
原创 HJ101 输入整型数组和排序标识【牛客网】
题目要求对输入的整型数组进行排序,并根据给定的排序标识决定升序或降序。解题思路包括:首先输入数组和排序标识,然后根据标识选择快速排序的顺序,最后输出排序结果。参考代码使用C++实现,通过sort函数结合greater或less实现降序或升序排序。时间复杂度为O(n log n),空间复杂度为O(log n)。
2025-05-22 21:41:36
288
原创 HJ33 整数与IP地址间的转换【牛客网】
本文介绍了如何实现整数与IP地址之间的相互转换。IP地址转换为整数的基本思路是将IP地址的每个部分乘以对应的位权($256^{4-i}$)并累加;而整数转换为IP地址则是通过不断除以位权,将商作为IP地址的每个部分。文章提供了具体的C++代码实现,时间复杂度为$\Omicron(1)$,空间复杂度为$\Omicron(1)$。代码通过字符串流处理输入,并利用位权计算完成转换,最终输出结果。
2025-05-22 21:25:06
860
原创 HJ23 删除字符串中出现次数最少的字符【牛客网】
本文介绍了如何删除字符串中出现次数最少的字符。首先,通过统计每个字符的出现次数,找到出现次数的最小值。然后,遍历字符串,输出那些出现次数不等于最小值的字符。该方法的时间复杂度为O(n),空间复杂度为O(1),其中n为字符串的长度。参考代码使用C++实现,通过数组记录字符出现次数,并最终输出符合条件的字符。
2025-05-21 21:31:44
406
原创 HJ20 密码验证合格程序【牛客网】
本文介绍了如何编写一个密码验证合格程序。程序需要满足三个条件:密码长度不少于8位;必须包含大写字母、小写字母、数字、特殊字符中的至少三种;不能存在两个独立的、长度大于2的连续子串完全相同。解题思路包括遍历字符串,统计字符类型数量,并使用哈希表检查子串重复情况。参考代码通过C++实现,时间复杂度为O(∑l_i),空间复杂度为O(max l_i)。程序最终输出“OK”或“NG”表示密码是否合格。
2025-05-21 21:23:24
820
原创 HJ17 坐标移动【牛客网】
题目要求根据给定的指令序列移动坐标,并输出最终位置。指令格式为方向字符(W、A、S、D)后跟数字,表示移动的步数。解题思路包括:1)使用 stringstream 分割输入字符串;2)判断指令是否合法,包括长度、字符类型和方向字符;3)根据合法指令更新坐标。最终输出坐标值。代码时间复杂度为 O(n),空间复杂度为 O(n),其中 n 为指令序列长度。
2025-05-20 23:31:32
646
原创 DP2 跳台阶【牛客网】
题目“跳台阶”要求计算从第0阶跳到第n阶的所有可能跳跃方式。每次可以选择跳1阶或2阶,因此问题可以转化为求斐波那契数列。状态转移方程为f(n) = f(n-1) + f(n-2),表示跳到第n阶的方法数等于跳到第n-1阶和第n-2阶方法数的和。通过初始化两个变量a和b为1,并利用循环互相累加,可以高效地计算出结果。时间复杂度为O(n),空间复杂度为O(1)。参考代码展示了如何实现这一思路。
2025-05-20 23:17:54
1322
原创 HJ10 字符个数统计【牛客网】
本文介绍了如何统计字符串中不同字符的个数。通过建立字符的散列表,遍历字符串中的每个字符,若字符未在散列表中出现过,则将其存入散列表并增加计数。最终输出不同字符的总数。该方法的时间复杂度为O(n),空间复杂度为O(1)。参考代码使用C++实现,通过向量模拟散列表,统计并输出结果。
2025-05-19 23:11:05
438
原创 HJ3 明明的随机数【牛客网】
《HJ3 明明的随机数》题目要求对一组随机数进行去重并排序输出。解题提供了两种思路:一是通过快速排序后去重,时间复杂度为O(nlogn),空间复杂度为O(n);二是利用散列(哈希表)进行去重,时间复杂度为O(n),空间复杂度为O(1)。两种方法均能有效解决问题,具体选择取决于对时间和空间复杂度的需求。参考代码分别展示了这两种方法的实现。
2025-05-19 23:03:48
951
原创 NC61 两数之和【牛客网】
本文介绍了解决“两数之和”问题的两种方法:排序+双指针和散列法。排序+双指针法首先对数组进行排序,然后使用双指针从两端向中间遍历,找到满足条件的两个数。该方法的时间复杂度为O(nlogn),空间复杂度为O(n)。散列法通过遍历数组,利用哈希表记录已遍历的元素及其下标,查找是否存在与当前元素相加等于目标值的元素。该方法的时间复杂度为O(n),空间复杂度为O(n)。
2025-05-18 20:00:55
966
原创 46. 全排列
题目要求返回一个不含重复数字的数组的所有可能全排列。通过回溯法,递归地确定每个位置的元素,当所有位置的元素确定后,将序列存入结果中。时间复杂度为O(n×n!),空间复杂度为O(n)。参考代码展示了如何通过交换元素和递归调用来实现全排列的生成。
2025-05-18 17:54:29
711
原创 HJ5 进制转换【牛客网】
本文介绍了如何将十六进制字符串转换为十进制数。题目链接和测试用例提供了具体的问题背景。解题思路分为两种:手动转换和系统转换。手动转换通过从字符串尾部开始,逐个字符计算其对应的十进制值并累加;系统转换则直接利用C++的输入流功能进行转换。两种方法的时间复杂度和空间复杂度均为O(n),其中n为字符串长度。参考代码分别展示了这两种实现方式。
2025-05-18 17:53:01
701
原创 17. 电话号码的字母组合【 力扣(LeetCode) 】
题目要求根据给定的数字字符串(2-9),返回所有可能的字母组合,类似于手机按键的字母映射。解题思路采用回溯法,通过深度优先搜索(DFS)遍历每个数字对应的所有字母,递归生成所有可能的组合。具体步骤如下:首先建立数字到字母的映射关系,然后递归遍历每个数字对应的字母,当遍历到最后一个数字时,将当前组合存入结果集中。时间复杂度为 $O(4^n)$(最坏情况下每层遍历4个字母),空间复杂度为 $O(n)$(递归栈深度)。
2025-05-14 23:18:21
943
原创 77. 组合【 力扣(LeetCode) 】
题目要求从1到n的整数中生成所有可能的k个数的组合。解题思路采用回溯法结合剪枝策略,确保生成的序列是递增的,从而避免重复。具体步骤包括:递归遍历每个位置的可能值,如果当前元素超出范围则剪枝;将合法元素加入序列,如果序列长度达到k则加入结果集;递归结束后回溯,移除最后一个元素。参考代码通过深度优先搜索(DFS)实现,时间复杂度为O(k * C(n, k)),空间复杂度为O(k)。
2025-05-14 23:16:55
751
原创 211. 添加与搜索单词 - 数据结构设计【 力扣(LeetCode) 】
本文介绍了如何设计一个支持添加和搜索单词的数据结构,特别处理了包含通配符.的搜索情况。通过构建字典树(Trie),实现了WordDictionary类,包含初始化、添加单词和搜索单词的功能。添加单词时,递归地将字符插入字典树;搜索单词时,递归地匹配字符,遇到.时遍历所有可能的子节点。时间复杂度方面,添加单词为O(|S|),搜索单词为O(26^{|S|}),空间复杂度为O(Σ|S_i|)。代码实现展示了具体的递归逻辑和字典树的操作。
2025-05-12 21:26:55
562
面向对象的分析设计-小组作业-超市配送系统
2025-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人