<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CodeClimb的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CodeClimb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CodeClimb]]></copyright><item><title><![CDATA[【华为OD-C卷-020 -关联端口组合并 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/144532411</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/144532411</guid><author>CodeClimb</author><pubDate>Thu, 21 Aug 2025 18:54:20 +0800</pubDate><description><![CDATA[文章摘要 题目要求合并存在共同端口的端口组，每组保留唯一端口并按升序排列。输入为M个端口组，每组是逗号分隔的整数数组。若两组有2个以上相同端口则合并。输出合并后的二维数组，保持原始输入顺序。 解题思路： 读取输入，构建端口组列表，记录原始顺序和数字集合。 循环扫描所有组对，若交集≥2则合并（取并集），更新代表顺序号为较小值。 重复合并直到无变化，按顺序号排序后输出。 关键点：使用集合操作高效处理合并，维护原始顺序，最终排序输出。时间复杂度约为O(m³L)，空间O(mL)。]]></description><category></category></item><item><title><![CDATA[【华为OD-C卷-019 对称字符串 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/144532382</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/144532382</guid><author>CodeClimb</author><pubDate>Thu, 21 Aug 2025 18:48:44 +0800</pubDate><description><![CDATA[题目摘要 这道题考察对称字符串的生成规律。给定递推规则：第i个字符串等于第i-1个字符串取反后拼接第i-1个字符串，初始字符串为&quot;R&quot;。要求根据输入的n和k，输出第n个字符串的第k个字符（0开始索引）。 关键点： 字符串长度呈指数增长，第n个字符串长度为2^(n-1) 不能直接生成字符串，需利用递归或迭代方法快速定位字符 通过二分法判断k在左半区（取反）还是右半区（原样） 解法思路： 使用二分法逐步缩小范围，每次判断k在左半区还是右半区 若在左半区，翻转颜色标志；若在右半区，调整k的索引]]></description><category></category></item><item><title><![CDATA[【基于ollama本地搭建开源大模型（qwen、deepseek等）教程分享 - 新手教程】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/148132547</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/148132547</guid><author>CodeClimb</author><pubDate>Thu, 22 May 2025 10:24:51 +0800</pubDate><description><![CDATA[本教程详细介绍了如何在本地使用ollama搭建开源大模型，适合新手快速上手。首先，建议从小体量模型开始，避免因配置问题影响体验。准备工作包括检查电脑配置、下载ollama软件及模型。安装ollama后，通过命令行下载并运行模型，如qwen2.5。接着，安装anythingllm软件以美化对话界面，并进行相关配置。教程还提供了删除指定模型的方法，以及如何在anythingllm中更新模型设置。整个过程强调从小参数开始尝试，逐步根据需求调整硬件和模型配置。]]></description><category></category></item><item><title><![CDATA[【华为OD- C卷 - 书籍叠放 200分（python、java、c、c++、js）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/148097815</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/148097815</guid><author>CodeClimb</author><pubDate>Tue, 20 May 2025 20:08:29 +0800</pubDate><description><![CDATA[这道题目要求计算一组书籍在不旋转的情况下，最多能叠放多少本。叠放规则是：如果书A的长和宽都比书B大，则可以将B放在A上面。解题思路是将书籍按长度升序排序，若长度相同则按宽度降序排序，然后在排序后的宽度序列中求最长严格递减子序列，即转化为经典的最长递增子序列（LIS）问题。通过二分查找优化，时间复杂度为O(n log n)。]]></description><category></category></item><item><title><![CDATA[【华为OD-2025C卷-013 打印文件 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/144531953</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/144531953</guid><author>CodeClimb</author><pubDate>Tue, 20 May 2025 18:58:56 +0800</pubDate><description><![CDATA[本文介绍了如何模拟5台打印机的打印过程。每台打印机有自己的待打印队列，文件按优先级（1~10）排序，数字越大优先级越高。如果优先级相同，则按进入队列的顺序打印。输入包含两种事件：“IN P NUM”表示将优先级为NUM的文件放入打印机P的队列，“OUT P”表示打印机P打印一个文件。输出每次“OUT P”事件打印的文件编号，若队列为空则输出“NULL”。文章提供了Python和Java的解法，使用队列和自定义排序来实现文件的优先级处理。Python使用defaultdict(deque)管理队列，Java使]]></description><category></category></item><item><title><![CDATA[【华为OD- C卷 - 增强的strstr 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/146811775</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/146811775</guid><author>CodeClimb</author><pubDate>Tue, 20 May 2025 18:12:16 +0800</pubDate><description><![CDATA[本文介绍了如何实现一个增强版的 strstr 函数，支持模糊匹配。目标字符串可以包含可选段（用 [] 标识），表示该位置可以匹配任意一个字符。解题思路包括解析目标字符串为匹配模板，并使用滑动窗口在源字符串中查找匹配位置。Python、Java 和 C++ 的解法均通过解析目标字符串为字符集合数组，并在源字符串中滑动窗口进行匹配，返回首次匹配的起始位置，若无匹配则返回 -1。]]></description><category></category></item><item><title><![CDATA[【华为OD- B卷 01 - 传递悄悄话 100分（python、java、c、c++、js）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/148090187</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/148090187</guid><author>CodeClimb</author><pubDate>Tue, 20 May 2025 16:41:14 +0800</pubDate><description><![CDATA[题目要求计算从二叉树的根节点传递悄悄话到所有节点所需的最长时间。输入是一个层序遍历的二叉树数组，其中-1表示空节点。解题思路是通过深度优先搜索（DFS）或广度优先搜索（BFS）遍历二叉树，计算每条路径的累计时间，并返回最大值。]]></description><category></category></item><item><title><![CDATA[【ThinkBook 16+ 电脑重做系统type-c接口部分功能失效解决方案】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/147704144</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/147704144</guid><author>CodeClimb</author><pubDate>Sun, 04 May 2025 21:51:10 +0800</pubDate><description><![CDATA[type-c口失效解决方案]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 126 求符合条件元组个数 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145142012</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145142012</guid><author>CodeClimb</author><pubDate>Wed, 19 Mar 2025 22:25:53 +0800</pubDate><description><![CDATA[通过 findCombinations() 递归遍历 numbers，寻找所有 elementCount 个元素的组合，使其总和等于 targetValue。itertools.combinations() 生成所有长度为 k 的组合，时间复杂度为 O(C(n,k))，即 O(n!使用 set() 存储符合条件的组合，保证去重（combinations 本身生成的组合是无序的，但 set 可以避免重复存储相同的组合）。通过递归尝试所有可能的 q 组合，并进行剪枝优化，避免重复计算。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 125 单词接龙 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145140432</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145140432</guid><author>CodeClimb</author><pubDate>Tue, 18 Mar 2025 18:40:33 +0800</pubDate><description><![CDATA[使用 groups 组织未使用的单词，以首字母为键，将同一首字母的单词存入 最大堆（heapq 的 Python 版本默认是最小堆，存入时取负号转换为最大堆）。用 heapq.heappush(groups[w[0]], (-len(w), w)) 维护每个首字母对应的最长单词，以 负长度 存储保证堆顶是最长的单词。data[0] 为起始索引 k，data[1] 为单词数量 n，data[2:] 为 n 个单词组成的列表 words。每次从 groups 选择最长的符合条件的单词，以最大化单词链长度。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 124 跳房子I 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145140499</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145140499</guid><author>CodeClimb</author><pubDate>Tue, 18 Mar 2025 18:35:06 +0800</pubDate><description><![CDATA[steps 是一个整数列表，输入格式类似 “[1,2,3,4]”，需要去掉首尾的 []，然后用 split(“,”) 切分，并用 map(int, …使用双重循环遍历 nums 数组，找出两个数 nums[i] 和 nums[j]，满足 nums[i] + nums[j] == target。第一行输入格式如 “[1,2,3,4]”，需要去掉 []，然后按 “,” 进行分割，并转换为 int 数组。若 num2 存在，计算其索引之和 sum = i + j，其中 j 为 num2 在 mp 中的索引。]]></description><category></category></item><item><title><![CDATA[【华为OD-C卷 判断一组不等式是否满足约束并输出最大差 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/146321941</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/146321941</guid><author>CodeClimb</author><pubDate>Mon, 17 Mar 2025 18:07:02 +0800</pubDate><description><![CDATA[计算 diff[i] = sum(a[i][j] * x[j]) - b[i]，即线性表达式的值与目标值 b[i] 之差。satisfies_constraint(diff, y[i]) 判断 diff 是否符合 y[i] 约束。sum(a[i][j] * x[j] for j in range(5)) 计算线性表达式的值。cs（约束类型）：第六个子数组，长度 3，存储不等式的符号，如 “>=”、“<=”` 等。var（变量值）：第四个子数组，长度 5，表示 x1,x2,x3,x4,x5 的值。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 -122 字符统计及重排 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145182760</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145182760</guid><author>CodeClimb</author><pubDate>Mon, 17 Mar 2025 15:19:32 +0800</pubDate><description><![CDATA[维护一个 最大堆 进行 自定义排序，用于 按照频次降序排列，时间复杂度 O(m log m)（m 为不同字符数）。基于比较器的排序（cmp_to_key）：时间复杂度 O(m log m)，其中 m 为不同字符的数量。map 采用 红黑树（RB-Tree） 实现，插入元素的复杂度 O(log m)，m 为不同字符数。由于 TreeMap 自动排序，默认 字典序 排序键（字符），但不影响自定义排序。哈希表（字典）：用于统计字符频次，时间复杂度为 O(n)（n 为字符串长度）。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 -121 消消乐游戏 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145183201</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145183201</guid><author>CodeClimb</author><pubDate>Sun, 16 Mar 2025 17:10:00 +0800</pubDate><description><![CDATA[这里采用 并查集（Disjoint Set Union，DSU） 进行 连通区域合并和计数，避免使用递归的 DFS 可能带来的栈溢出问题，并且比 BFS 更高效。如果发现新的 1，说明找到了一块新的区域，执行 bfs()，并增加 clicks 计数。遍历整个矩阵，遇到 1 且未访问的点时，说明找到了一块新的连通区域（需要点击一次）。调用 dfs() 方法，以该 1 为起点，递归访问所有相邻的 1，并标记为已访问。遍历矩阵，每次遇到新的 1，说明找到了一块新区域，需要进行 DFS 访问并计数。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 120 分割数组的最大差值 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145143181</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145143181</guid><author>CodeClimb</author><pubDate>Mon, 10 Feb 2025 16:03:57 +0800</pubDate><description><![CDATA[遍历每个可能的分割点 i，计算 prefix_sum[i] 和 suffix_sum[i+1] 的差值，取其绝对值。遍历所有可能的分割点 i，计算 prefixSum[i] 和 suffixSum[i + 1] 的差值，取其绝对值。使用 prefixSum 数组来存储前缀和，prefixSum[i] 表示从数组开始到第 i 个元素的总和。前缀和（prefix_sum）：prefix_sum[i] 表示从数组开始到第 i 个元素的总和。左部分的和：leftSum = prefixSum[i]。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 119 评论转换输出 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145143507</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145143507</guid><author>CodeClimb</author><pubDate>Mon, 10 Feb 2025 15:59:48 +0800</pubDate><description><![CDATA[第一条评论是"helo,2,ok,0,bye,0"，第二条评论是"test,0"，第三条评论是"one,1,two,1,a,0"。所有评论被保存成"hello,2,ok,0.bye,0,test,0,one,1,two,1,a,0"。对于上述格式的评论，请以另外一种格式打印：首先打印评论嵌套的最大深度。然后是打印n行，第 i (1 ≤ i ≤ n) 行对应于嵌套级别为 i 的评论 (根评论的嵌套级别为1)。对于第 i 行，嵌套级别为的评论按照它们出现的顺序打印，用空格分隔开。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 118 路灯照明问题 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145142212</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145142212</guid><author>CodeClimb</author><pubDate>Fri, 07 Feb 2025 14:47:21 +0800</pubDate><description><![CDATA[第 i 盏灯的位置在 i * 100 这个坐标点上，照明区间为 [i * 100 - arr[i], i * 100 + arr[i]]。如果当前区间的起始位置 start 大于 current_end，说明这两个区间之间有未被照亮的部分，累加未照亮的长度。如果当前区间的起始位置 start 大于 currentEnd，说明两个区间之间存在未被照亮的区域，累加该未照亮的长度。构建照明区间：根据每盏灯的位置和照明半径，构建对应的区间 [start, end]。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 -117 招聘 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145142828</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145142828</guid><author>CodeClimb</author><pubDate>Fri, 07 Feb 2025 14:42:51 +0800</pubDate><description><![CDATA[如果最早结束的池子（即 heap 中的最小值）结束时间小于等于当前任务的开始时间，则表示该池子可以容纳当前任务，更新该池子的结束时间。如果当前池子未满，且池子中最后一个任务的结束时间小于等于当前任务的开始时间，则将任务放入该池子。如果池子未满，且池子中最后一个任务的结束时间小于等于当前任务的开始时间，则将任务放入该池子。同一个池子中的任务不能时间重叠，即后一个任务的开始时间必须大于等于前一个任务的结束时间。同一个池子中的任务不能时间重叠，即后一个任务的开始时间必须大于等于前一个任务的结束时间。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 -116 欢乐的周末 100分（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145182669</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145182669</guid><author>CodeClimb</author><pubDate>Thu, 06 Feb 2025 21:08:58 +0800</pubDate><description><![CDATA[深度优先搜索（DFS）：从每个起点开始，使用 DFS 标记所有能够到达的点，分别记录华和卫能到达的位置。统计结果：遍历整个网格，对于每个标记为 3 的位置，如果华和卫都能到达，则计数加一。找到起点：分别找到两个起点（假设输入中有两个标记为 2 的点）。计算从华的起点和卫的起点分别能到达的 3 的位置。输出交集的大小，即两个都能到达的 3 位置的数量。取两个集合的交集，得到两个都能到达的关键地点。输出：输出能够被两个人都到达的关键地点的数量。3 为被选中的聚餐地点（非障碍物）3：关键地点（需要统计的地点）。]]></description><category></category></item><item><title><![CDATA[【华为OD-E卷 - 高频题目全览 （关注、收藏）通过率100%以上题目可达95%（python、java、c++、js、c）】]]></title><link>https://blog.youkuaiyun.com/CodeClimb/article/details/145452819</link><guid>https://blog.youkuaiyun.com/CodeClimb/article/details/145452819</guid><author>CodeClimb</author><pubDate>Thu, 06 Feb 2025 11:53:01 +0800</pubDate><description><![CDATA[E 算法题库目录全集 持续更新中]]></description><category></category></item></channel></rss>