第425场周赛:最小正和子数组、重排子字符串以形成目标字符串、最小数组和、移除边之后的权重最大和
Q1、[简单] 最小正和子数组
1、题目描述
给你一个整数数组 nums 和 两个 整数 l 和 r。你的任务是找到一个长度在 l 和 r 之间(包含)且和大于 0 的 子数组 的 最小 和。
返回满足条件的子数组的 最小 和。如果不存在这样的子数组,则返回 -1。
子数组 是数组中的一个连续 非空 元素序列。
2、解题思路
- 滑动窗口:
- 使用滑动窗口遍历数组,可以高效地计算子数组和。
- 在窗口长度范围内逐一检查是否满足条件。
- 暴力双层循环优化:
- 第一层循环选择子数组的左边界。
- 第二层循环从左边界延伸到右边界,并动态累加子数组的和,避免重复计算。
- 判断合法性:
- 每当子数组的长度满足
[l,r]
且和大于 0 时,记录其和。 - 更新符合条件的最小和。
- 每当子数组的长度满足
- 最终结果:
- 如果遍历完数组仍未找到符合条件的子数组,返回 −1 。
3、代码实现
int minimumSumSubarray(vector<int>& nums, int l, int r) {int n = nums.size();int minSum = INT_MAX; // 初始化最小和为无穷大int left = 0; // 滑动窗口的左边界// 遍历数组的每个起始点作为窗口的左边界while (left < n) {int right = left; // 窗口的右边界从左边界开始int currentSum = 0; // 当前窗口的和// 扩展右边界,直到窗口长度超过 r 或到达数组末尾while (right < n && right - left + 1 <= r) {currentSum += nums[right]; // 累加当前窗口的和// 判断当前窗口是否满足长度 [l, r] 且和大于 0if (right - left + 1 >= l && currentSum > 0) {minSum = min(minSum, currentSum); // 更新最小和}++right; // 扩展右边界}++left; // 移动左边界}// 如果没有符合条件的子数组,返回 -1;否则返回最小和return minSum == INT_MAX ? -1 : minSum;
}
4、复杂度
时间复杂度分析
- 外层循环:左边界最多遍历 n 次。
- 内层循环:右边界最多遍历 r 次(窗口长度限制为 r)。
- 总复杂度:O(n⋅r),其中 r 是窗口的最大长度。
空间复杂度分析
- 仅使用常数额外空间,空间复杂度为 O(1) 。
Q2、[中等] 重排子字符串以形成目标字符串
1、题目描述
给你两个字符串 s 和 t(它们互为字母异位词),以及一个整数 k。
你的任务是判断是否可以将字符串 s 分割成 k 个等长的子字符串,然后重新排列这些子字符串,并以任意顺序连接它们,使得最终得到的新字符串与给定的字符串 t 相匹配。
如果可以做到,返回 true;否则,返回 false。
字母异位词 是指由另一个单词或短语的所有字母重新排列形成的单词或短语,使用所有原始字母恰好一次。
子字符串 是字符串中的一个连续 非空 字符序列。
2、解题思路
基本条件判断:
- 如果 s 和 t 的长度不同,直接返回
false
。 - 如果字符串长度不能被 k 整除,无法将字符串等分为 k 段,返回
false
。
字符频率验证:
- s 和 t 是字母异位词,它们的字符频率应该完全相同。
- 使用哈希表统计 s 和 t 的字符频率,如果两者不相等,返回
false
。
检查分割和重排:
- 将 s 分割成 k 个子字符串,并统计这些子字符串的频率。
- 将 t 也分割成 k 个子字符串,验证是否可以通过重新排列 s 的子字符串匹配 t 的分割。
返回结果:
- 如果所有子字符串都能被正确匹配,返回
true
,否则返回false
。
3、代码实现
class Solution {
public:bool isPossibleToRearrange(string s, string t, int k) {int n = s.size();// 基础条件判断if (n != t.size() || n % k != 0) {return false;}int segmentLength = n / k; // 每个子字符串的长度// 统计 s 和 t 的字符频率unordered_map<char, int> sFreq, tFreq;for (char c : s)sFreq[c]++;for (char c : t)tFreq[c]++;// 验证 s 和 t 的字符频率是否完全相等if (sFreq != tFreq) {return false;}// 检查能否将 s 分割成 k 个子串,每个子串重排后匹配 t 的子串unordered_map<string, int> hash;for (int i = 0; i < n; i += segmentLength) {string tmp = s.substr(i, segmentLength); // 提取 s 的子字符串hash[tmp]++;}for (int i = 0; i < n; i += segmentLength) {string tmp = t.substr(i, segmentLength); // 提取 t 的子字符串if (!hash.count(tmp)) {return false; // 如果对应的子字符串不存在,返回 false} else {if ((--hash[tmp]) == 0) {hash.erase(tmp); // 减少频率,并在频率为 0 时移除}}}return true; // 所有子字符串都能匹配}
};
代码详细注释
- 基本条件判断:
- 如果 s 和 t 的长度不同,或者 n%k≠0,无法分割为 k 段,直接返回
false
。 - 计算每个子字符串的长度
segmentLength = n / k
。
- 如果 s 和 t 的长度不同,或者 n%k≠0,无法分割为 k 段,直接返回
- 统计字符频率:
- 使用哈希表
sFreq
和tFreq
分别统计 s 和 t 的字符频率。 - 如果两者频率不相同,说明 s 和 t 无法通过重排列匹配,返回
false
。
- 使用哈希表
- 统计子字符串频率:
- 遍历 s,将其分割为 k 段子字符串,统计每段出现的频率存入哈希表
hash
。 - 遍历 t,检查分割出的每段是否可以通过重排列匹配 s 的分割子字符串。
- 遍历 s,将其分割为 k 段子字符串,统计每段出现的频率存入哈希表
- 子字符串匹配:
- 如果 t 的某段子字符串在
hash
中不存在,说明匹配失败。 - 每次匹配成功后,减少对应子字符串的频率,当频率为 0 时将其移除。
- 如果 t 的某段子字符串在
- 返回结果:
- 如果所有子字符串匹配成功,返回
true
,否则返回false
。
- 如果所有子字符串匹配成功,返回
4、复杂度
时间复杂度分析
- 字符频率统计:
- 遍历 s 和 t,时间复杂度为 O(n)。
- 子字符串分割与统计:
- 遍历 s 和 t 分割为 k 段,每段长度为 n/k。总时间复杂度为 O(n)。
- 总复杂度:
- 整体复杂度为 O(n),其中 n 是字符串 s 和 t 的长度。
空间复杂度分析
- 字符频率哈希表:
- 需要额外的空间存储字符频率和子字符串频率,空间复杂度为 O(m),其中 m 是字符集大小(对于英文字母最多为 26)。
- 总空间复杂度:
- 空间复杂度为 O(m+k),其中 k 是分割出的子字符串数量。
Q3、[中等] 最小数组和
1、题目描述
给你一个整数数组 nums
和三个整数 k
、op1
和 op2
。
你可以对 nums
执行以下操作:
- 操作 1:选择一个下标
i
,将nums[i]
除以 2,并 向上取整 到最接近的整数。你最多可以执行此操作op1
次,并且每个下标最多只能执行一次。 - 操作 2:选择一个下标
i
,仅当nums[i]
大于或等于k
时,从nums[i]
中减去k
。你最多可以执行此操作op2
次,并且每个下标最多只能执行一次。
注意: 两种操作可以应用于同一下标,但每种操作最多只能应用一次。
返回在执行任意次数的操作后,nums
中所有元素的 最小 可能 和 。
2、解题思路
核心思想:
使用动态规划 (Dynamic Programming, DP) 方法,逐步计算在指定的操作次数限制下,nums
中前若干元素能达到的最小和。
动态规划的状态转移基于以下思路:
- 每个元素在当前操作次数的约束下,可能有多种结果:
- 不对该元素使用任何操作。
- 对该元素使用操作 1 或操作 2。
- 对该元素同时使用操作 1 和操作 2(若条件允许)。
- 根据上述情况,选择所有可能结果的最小值更新当前状态。
解题步骤
1. 状态定义
- 三维 DP(递归解法):
memo[i][op1][op2]
表示处理到第i
个元素时,最多使用op1
次操作 1 和op2
次操作 2 的最小数组和。 - 二维 DP(迭代优化解法):
f[p][q]
表示在当前元素下,使用最多p
次操作 1 和q
次操作 2 时的最小数组和。
2. 状态转移方程
-
如果不对当前元素执行任何操作:
res = f[p][q] + x;
-
如果对当前元素执行操作 1:
res = min(res, f[p-1][q] + (x + 1) / 2);
-
如果对当前元素执行操作 2 (且 x >= k) :
res = min(res, f[p][q-1] + x - k);
-
如果对当前元素同时执行操作 1 和操作 2 (且 x >= k 且 p > 0):
reducedTwiceX = (x + 1) / 2 >= k ? (x + 1) / 2 - k : (x - k + 1) / 2; res = min(res, f[p-1][q-1] + reducedTwiceX);
3. 返回值
最终结果为 f[n][op1][op2]
,即在处理完所有元素后,最多使用 op1
次操作 1 和 op2
次操作 2 的最小数组和。
3、代码实现
解法 1:递归 + 记忆化搜索
class Solution {
public:int minArraySum(vector<int>& nums, int k, int op1, int op2) {int n = nums.size();// 初始化记忆化数组, memo[i][op1][op2] 表示在第 i 个元素及之前, 使用 op1 次操作 1 和 op2 次操作 2 的最小数组和。vector<vector<vector<int>>> memo(n, vector<vector<int>>(op1 + 1, vector<int>(op2 + 1, -1)));// 深度优先搜索函数, 使用 lambda 捕获自身 dfs。auto dfs = [&](auto&& dfs, int i, int remainingOp1, int remainingOp2) -> int {// 递归基: 如果索引越界, 返回 0, 因为没有元素可以处理。if (i < 0) {return 0;}// 引用当前状态的结果, 避免多次重复计算。int& res = memo[i][remainingOp1][remainingOp2];// 如果已经计算过, 直接返回结果。if (res != -1) {return res;}// 获取当前元素值。int x = nums[i];// 初始化为不使用任何操作时的情况: 跳过当前元素, 继续处理前面的元素。res = dfs(dfs, i - 1, remainingOp1, remainingOp2) + x;// 尝试使用操作 1 (将当前元素除以2并向上取整), 如果还可以使用操作 1。if (remainingOp1 > 0) {int reducedX = (x + 1) / 2; // 计算操作 1 后的值。res = min(res, dfs(dfs, i - 1, remainingOp1 - 1, remainingOp2) + reducedX);}// 尝试使用操作 2 (从当前元素中减去 k), 如果还可以使用操作 2 且当前值 >= k。if (remainingOp2 > 0 && x >= k) {int reducedX = x - k; // 计算操作2后的值。res = min(res, dfs(dfs, i - 1, remainingOp1, remainingOp2 - 1) + reducedX);// 如果同时使用操作 1 和操作 2, 计算结果并更新最优值。if (remainingOp1 > 0) {int reducedTwiceX = (x + 1) / 2 >= k ? (x + 1) / 2 - k : (x - k + 1) / 2;res = min(res, dfs(dfs, i - 1, remainingOp1 - 1, remainingOp2 - 1) + reducedTwiceX);}}// 返回当前状态的最优解。return res;};// 从数组的最后一个元素开始递归, 初始操作次数为 op1 和 op2。return dfs(dfs, n - 1, op1, op2);}
};
解法 2:动态规划(迭代解法)
class Solution {
public:int minArraySum(vector<int>& nums, int k, int op1, int op2) {// 定义 DP 数组 f[p][q]// f[p][q] 表示使用最多 p 次操作 1 和 q 次操作 2 时, 当前元素的最小数组和vector<vector<int>> f(op1 + 1, vector<int>(op2 + 1, 0));// 遍历每个数组元素for (int x : nums) {// 倒序遍历操作次数, 防止状态更新覆盖影响其他计算for (int p = op1; p >= 0; p--) {for (int q = op2; q >= 0; q--) {// 初始化当前状态的最小值int res = f[p][q] + x; // 不使用任何操作// 尝试使用操作 1: 将 x 除以 2 并向上取整if (p > 0) {int reducedX = (x + 1) / 2; // 操作 1 的结果res = min(res, f[p - 1][q] + reducedX);}// 尝试使用操作 2: 从 x 减去 k (仅当 x >= k 时才有效)if (q > 0 && x >= k) {int reducedX = x - k; // 操作 2 的结果res = min(res, f[p][q - 1] + reducedX);// 同时尝试使用操作 1 和操作 2if (p > 0) {// 计算两种操作同时执行后的值int reducedTwiceX = (x + 1) / 2 >= k ? (x + 1) / 2 - k : (x - k + 1) / 2;res = min(res, f[p - 1][q - 1] + reducedTwiceX);}}// 更新状态f[p][q] = res;}}}// 返回最终结果, 即最多使用 op1 次操作1和 op2 次操作 2 后的最小数组和return f[op1][op2];}
};
4、复杂度分析
时间复杂度:
- 递归解法:
O(n * op1 * op2)
(每次状态查询的复杂度为常数)。 - 动态规划解法:
O(n * op1 * op2)
(每个状态需遍历两个操作次数)。
空间复杂度:
- 递归解法:
O(n * op1 * op2)
(记忆化数组)。 - 动态规划解法:
O(op1 * op2)
(二维 DP 数组)。
Q4、[困难] 移除边之后的权重最大和
1、题目描述
存在一棵具有 n
个节点的无向树,节点编号为 0
到 n - 1
。给你一个长度为 n - 1
的二维整数数组 edges
,其中 edges[i] = [ui, vi, wi]
表示在树中节点 ui
和 vi
之间有一条权重为 wi
的边。
你的任务是移除零条或多条边,使得:
- 每个节点与至多
k
个其他节点有边直接相连,其中k
是给定的输入。 - 剩余边的权重之和 最大化 。
返回在进行必要的移除后,剩余边的权重的 最大 可能和。
2、解题思路
建图
将输入的 edges
转换为图的邻接表表示,方便进行深度优先搜索。
提前判断特殊情况
如果树中所有节点的度数都不超过 k
,则不需要移除任何边,直接返回所有边的总权重。
深度优先搜索 (DFS)
在限制条件下,递归计算每个节点是否选择与其父节点相连,以及如何在子节点中分配边以最大化权重和:
- 定义两种状态:
notChoose
:当前节点不选择与其父节点相连时,子树中的最大权重和。choose
:当前节点选择与其父节点相连时,子树中的最大权重和。
- 递归处理每个节点,动态计算增量值,选择权重增量最大的若干条边。
增量排序
在每个节点的子树中,选择能够提供最大收益(权重增量)的边,这些增量从大到小排序,并取前 k-1
个增量。
动态规划递归返回
通过递归返回值,结合当前节点的增量值,逐步计算出最终结果。
3、代码实现
class Solution {
public:long long maximizeSumOfWeights(vector<vector<int>>& edges, int k) {int n = edges.size() + 1; // 节点数vector<vector<pair<int, int>>> graph(n);long long totalWeight = 0;// 构建无向图并计算总权重for (const auto& edge : edges) {int u = edge[0], v = edge[1], weight = edge[2];graph[u].emplace_back(v, weight);graph[v].emplace_back(u, weight);totalWeight += weight;}// 检查是否可以直接返回总权重 (即所有节点的度数均 <= k)bool isSimple = true;for (const auto& neighbors : graph) {if (neighbors.size() > k) {isSimple = false;break;}}if (isSimple) {return totalWeight;}// 定义 DFS 函数auto dfs = [&](auto& self, int node, int parent) -> pair<long long, long long> {// notChoose: 当前节点及其子树的最大权重和, 当前节点不与父节点相连// choose: 当前节点及其子树的最大权重和, 当前节点与父节点相连long long notChoose = 0;vector<int> increment; // 增量列表// 遍历子节点for (const auto& [neighbor, weight] : graph[node]) {// 忽略回到父节点的边if (neighbor == parent) {continue;}// 子树递归计算auto [subtreeNotChoose, subtreeChoose] = self(self, neighbor, node);// 默认选择子树的 notChoosenotChoose += subtreeNotChoose;// 计算从 notChoose 到 choose 的增量int delta = subtreeChoose + weight - subtreeNotChoose;if (delta > 0) {increment.push_back(delta);}}// 按增量从大到小排序ranges::sort(increment, greater());// 增量取前 k-1 个加到 notChoose 中for (int i = 0; i < min((int)increment.size(), k - 1); ++i) {notChoose += increment[i];}// 计算 choose, 尝试额外选择第 k 个增量long long choose = notChoose;if (increment.size() >= k) {notChoose += increment[k - 1];}return {notChoose, choose};};// 从根节点 (0号节点) 开始 DFS, 返回最大可能权重和return dfs(dfs, 0, -1).first;}
};
4、复杂度分析
时间复杂度
- 遍历构建图:O(n),其中 n 是节点数。
- DFS 递归:O(n),每个节点访问一次。
- 增量排序:O(klogk),每个节点对其子节点的增量排序。
- 总时间复杂度:O(n+klogk)。
空间复杂度
- 图的存储:O(n)。
- 递归栈:最坏情况下 O(n)。
- 总空间复杂度:O(n)。
相关文章:
第425场周赛:最小正和子数组、重排子字符串以形成目标字符串、最小数组和、移除边之后的权重最大和
Q1、[简单] 最小正和子数组 1、题目描述 给你一个整数数组 nums 和 两个 整数 l 和 r。你的任务是找到一个长度在 l 和 r 之间(包含)且和大于 0 的 子数组 的 最小 和。 返回满足条件的子数组的 最小 和。如果不存在这样的子数组,则返回 -…...
常见矩阵分析法(BCG、GE、IE、SPACE、TOWS、优先、战略优先级、安索夫、风险矩阵):如何通过系统化方法助力战略决策与数据驱动决策
在快速变化的商业环境中,企业决策者面临着诸多复杂的选择与挑战。矩阵分析法作为战略分析的重要工具,能够系统化地分析企业的内外部环境,帮助管理层做出更加科学、合理的决策。本文将全面解析常见的矩阵分析法,并探讨它们在数据驱…...
沐风老师3DMAX摄相机阵列插件使用方法
3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...
踩坑日记-win电脑怎么登录虚拟机上部署的phpmyadmin?
前请提要 电脑win11,安装centOS7虚拟机,部署了linux 安装了docker和一些镜像容器,准备开发项目 访问 phpMyAdmin 时无法打开页面 访问 http://0.0.0.0:8899/ 时,提示无法访问此页面。0.0.0.0 表示 Docker 容器将监听宿主机上的…...
手写观察者模式
本人是JavaScript开发者,以下的示例也是以Javascript举例来说明的。 一、概念 当对象间存在一对多的关系时,使用观察者模式。当被观察的对象发生变化时,其所有的观察者都会收到通知并进行相应的操作。 二、具体例子 比如说,学…...
20.LMAX-DDD的极致性能架构
学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 历史起源架构目标架构要素 时序对比传统时序事件溯源时序LMAX时序 单线程非阻塞异步IO(reactor)多线程单…...
axios的引入和基本使用
一、axios的引入 使用 pnpm add axios 二、使用axios 三、axios的使用方法补充 axios除了直接使用它实例上的方法,还可以通过配置的方式进行使用axios({}),传入一个对象,这个对象可以有如下属性: url(字符串&#…...
14--VulnHub 靶机系列之Gear_Of_War#1
靶机下载地址: https://download.vulnhub.com/gearsofwar/Gear_Of_War%231.ova kali机(VMware)两张网卡: 第一张网卡使用VM0(桥接模式)-桥接到VirtualBox Host-Only Ethernet Adapter 第二张网卡使用NAT模式--用于访问网络 信息收集 kali机eth0的I…...
Python + OpenCV 系列:图像阈值处理
文章目录 引言 1. 阈值处理的基本概念2. OpenCV 中的阈值处理3. 常见的阈值类型3.1 二值化阈值3.2 反向二值化阈值3.3 截断阈值3.4 平滑阈值 4. 自适应阈值5. Otsu’s 阈值法6. 阈值处理的应用场景7. 总结 引言 图像阈值处理是计算机视觉和图像处理中一种非常基础而重要的技术…...
el-thee懒加载删除某条数据 ,el-thee懒加载重置,el-thee刷新某个节点
一、懒加载的tree已经全部展开,外部点击删除的时候不需要重新展开点击获取下一层数据 <template> <el-treeref"tree":data"treeData":props"defaultProps"render-after-expandhighlight-currentlazy:expand-on-click-node&q…...
如何在 JavaScript 中设置定时器?
在 JavaScript 中,设置定时器通常使用两个内置的函数:setTimeout() 和 setInterval()。它们允许你在指定的时间延迟后执行某个函数或者以某个间隔反复执行某个函数。下面,我将结合实际项目代码示例讲解如何使用它们。 1. setTimeout() — 延…...
LDR6500:音频双C支持,数字与模拟的完美结合
在当今数字化快速发展的时代,音频设备的兼容性和性能成为了用户关注的重点。LDR6500,作为乐得瑞科技精心研发的USB Power Delivery(PD)协议芯片,凭借其卓越的性能和广泛的应用兼容性,为音频设备领域带来了新…...
小型项目的数据库适合选用ClickHouse吗?
我们与MySQL比较。 MySQL 1. 传统的业务系统 用户管理订单处理产品信息企业基础数据 2. 特点 行存储,适合频繁的增删改事务支持完善小规模数据查询性能好数据一致性保证生态系统成熟,运维简单 ClickHouse 1. 数据分析场景 日志分析用户行为分析实…...
MySQL--》如何在SQL中巧妙运用函数与约束,优化数据处理与验证?
目录 函数使用 字符串函数 数值函数 日期函数 流程函数 约束 函数使用 函数是指一段可以直接被另一段程序调用的程序或代码,在mysql当中有许多常见的内置函数,接下来开始对这些内置函数及其作用进行简单的讲解和使用: 字符串函数 my…...
鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
鸿蒙心路旅程:探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力 HarmonyOS Next 是华为推出的全新一代操作系统,旨在进一步推动分布式技术的深度应用和生态融合。本文将从技术特点、应用场景入手,通过实战案例与代码示例&…...
JavaWeb 9 MySQL DDL DML
前言 1、什么是数据库? 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库 2、目前主流的关系型数据库有哪些? 目前主流的关系型数据库:(SQL语句是操作关系型数据库的统一标准&#x…...
哑资源对于通信行业的重要性以及哑资源管理的难点
一、哑资源定义与分类 1.1 哑资源概念界定 哑资源(Dumb Resources)在通信行业中指的是那些不具备智能处理能力的物理设备和设施。这些资源虽然不直接参与数据的生成和处理,但它们是通信网络正常运行的基础。哑资源包括但不限于电缆、天线、…...
聊聊大语言模型的上下文处理能力基本概念
一、Llama3的上下文处理能力 Llama 3不同版本的上下文处理能力有所不同: Llama 3基础版本:上下文长度一般为8k tokens左右,约相当于6,000字或10页文档.Llama 3.1版本:将上下文窗口提升到了128k tokens,这使得模型在处…...
总结几种不同风格的学术论文ChatGPT提示词
目录 1.不同写作风格的重要性 2.叙事写作 3.描述性写作 4.说明性写作 5.讨论性写作 小编先跟宝子们来看看一篇学术论文或者研究论文的基本组成部分,有助于后续提示词说明的整体结构和有效性: 引言:引言是写作的开篇部分,作者…...
鸿蒙技术分享:鸿蒙元服务踩坑血泪:文件下载、选择、打开
鸿蒙元服务踩坑:文件下载、选择、打开 因为项目有开发元服务的需求,因此需要将原本给应用开发封装的文件操作相关代码拿到元服务里用。本以为也没很复杂的功能,直接用应该问题不大,结果还是踩了坑…… 原本给应用使用的代码请查…...
12月通信基础知识补充2
看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充6】12月通信基础知识补充2 一、Walsh码1.1 Walsh码的基本特性1.2 …...
佑驾创新冲刺上市:交付进度延后,研发投入缩减,刘国清为实控人
近日,深圳佑驾创新科技股份有限公司(MINIEYE,下称“佑驾创新”)通过港交所聆讯并披露了聆讯后资料集(即招股书)。据贝多财经了解,佑驾创新获得了IPO备案通知书,拟在港交所上市。 对…...
【Linux系列】Linux 防火墙的详细学习
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
使用 Trace 实现 onnx 的导出 - 学习记录
使用 Trace 实现 onnx 的导出 一、使用 Trace 实现 onnx 的导出的流程二、代码分解2.1、定义模型2.2、分析模型操作类型2.3、构建钩子函数2.3.1、定义 hook 函数2.3.2、注册 Conv2d - hook 函数2.3.3、注册 ReLU - hook 函数2.3.4、注册 Add - hook 函数三、完整导出 onnx 代码…...
python字符串处理基础操作总结
1.去掉空格或者特殊符号 input_str.strip() #去掉所有空格 input_str.lstrip() #去掉左边空格 input_str.rstrip() #去掉右边空格 def print_hi():input_str 今天天气不错,风和日丽 out input_str.strip()print(input_str)print(out)if __name__ __main__:print…...
AI如何让PPT制作变得轻松与智能?用一键生成ppt!
谁还愿意把时间浪费在PPT的设计和内容排版上?尤其是对于那些需要频繁制作演示文稿的人来说,一份看起来专业的PPT往往会让人陷入“做与不做”的困境。但随着科技的飞速发展,传统的PPT制作方法正逐渐被更为高效的工具所取代,尤其是智…...
OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算机器人世界/手眼标定: w T b _{}^{w}\textrm{T}_b wTb 和 c T g _{}^{c}\textrm{T}_g cTg。 cv::calibrateRobotWorldHa…...
vscode通过ssh连接虚拟机进行开发
虚拟机自带的vscode很卡而且画质感觉不行,所以用这种方法解决 1.VSCODE安装扩展Tabnine(AI代码补全),Remote Development 2.虚拟机终端ifconfig查看本机ip 192.168.43.197 开启ubuntu的SSH服务 sudo apt-get install openssh-server 配置vscode的ssh …...
TCP/IP协议详解(小白)
TCP/IP协议详解 TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由…...
手机租赁系统开发全面解析与实现指南
内容概要 手机租赁系统的设计理念是为了满足用户对便捷、灵活的手机使用需求。想象一下,谁还愿意花大价钱买一部手机呢?尤其是当新款手机频繁推出时,租赁似乎成了更受欢迎的选择。这个系统旨在让用户可以随时随地选择租用不同型号的手机&…...
洛谷【排序】算法的题单 - 笔记
2024-12-09 - 第 37 篇 洛谷【排序】题单 - 笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 洛谷【排序】题单合集 一、排序算法都有… 1. 简单排序算法 这些算法通常是基础的排序方法,容易理解和实现,但效率较低,适用于数据量较小的情况…...
《筑牢网络安全防线:守护数字时代的生命线》
《筑牢网络安全防线:守护数字时代的生命线》 一、网络安全的重要性二、网络安全面临的挑战三、网络安全技术四、网络安全案例分析五、如何加强网络安全防护六、结论 一、网络安全的重要性 网络安全在当今数字化时代的重要性不言而喻,它涵盖了多个关键领…...
VB.net进行CAD二次开发(二)与cad交互
开发过程遇到了一个问题:自制窗口与控件与CAD的交互。 启动类,调用非模式窗口 Imports Autodesk.AutoCAD.Runtime Public Class Class1 //CAD启动界面 <CommandMethod("US")> Public Sub UiStart() Dim myfrom As Form1 New…...
Python函数——函数的返回值定义语法
一、引言 在Python中,函数的返回值是其核心功能之一,它使得函数能够将计算结果传递给调用者,进而推动程序的逻辑和功能实现。理解和掌握函数的返回值语法,不仅能够提高代码的模块化和可读性,还能使程序更加高效和灵活…...
Python 布尔索引筛选数据
Python 布尔索引筛选数据 1. 布尔索引筛选数据1.1. 根据布尔索引对矩阵元素进行赋值1.2. 根据布尔索引对矩阵元素进行赋值1.3. 根据布尔索引对矩阵元素进行赋值 2. logits[logits < values[:, [-1]]] -1000References 1. 布尔索引筛选数据 布尔索引允许通过条件筛选矩阵中…...
mybatis缓存
一级缓存和二级缓存范围不一样 只缓存查询,缓存增删改没有意义 先在mybatis-config.xml加入 <setting name"cacheEnabled"value"true"/> 在mapper.xml中开启二缓存 <!--回收策略为先进先出,每隔60秒刷新一次,…...
Linux下的编程
实验7 Linux下的编程 一、实验目的 熟练掌握Linux下Python编程的方法、函数调用方法以及shell编程中的控制结构。 二、实验环境 硬件:PC电脑一台,网络正常。 配置:win10系统,内存大于8G ,硬盘500G及以上。 软件&a…...
使用Java创建RabbitMQ消息生产者的详细指南
目录 在现代分布式系统中,消息队列是实现异步通信的重要工具。RabbitMQ作为一种流行的开源消息代理,支持多种消息协议,广泛应用于微服务架构和事件驱动的应用程序中。本文将深入探讨如何使用Java创建RabbitMQ的消息生产者,发送消息…...
笔记本外接显示屏没声音
1、笔记本正常有声音,但是外接显示屏后没有声音了怎么回事呢?原来外接显示屏后笔记本的声音输出会自动选择显示屏的音频输出,但是显示屏可能没有声音输出所以导致笔记本没有声音。 2、解决办法:打开笔记本设置,选择声…...
【Linux】Linux权限管理:文件与目录的全面指南
在Linux系统中,权限管理是确保数据安全的关键。本文将为大家介绍Linux文件与目录的权限管理,帮助你理解如何设置和管理访问权限。无论你是新手还是有经验的用户,这里都将提供实用的技巧和知识,助你更好地掌握Linux环境。让我们一起…...
并发在前端中的应用?
并发在前端中的应用主要体现在处理多个请求和优化页面加载速度方面。前端并发处理通常涉及在极短时间内发送多个数据请求,例如在页面渲染时同时请求多个数据。通过并发处理,可以显著减少页面加载时间,提升用户体验。 前端并发处理的具体…...
Spring Boot助力,一键解锁招聘全流程信息精细化管理
2系统相关技术 2.1 Java语言介绍 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景&#…...
沉浸式多用户跟踪解决方案
沉浸式多用户VR跟踪解决方案,支持使用HTC VIVE或Valve Index等消费级虚拟现实头盔在房间内执行大范围多用户跟踪。该解决方案不仅能够跟踪处于坐姿或其他静止用户的头部和控制器,还支持房间内多用户动态跟踪。 通常房间内的跟踪受限于特定的系统能力&…...
“切片赋值”创建列表批量操作“新”方法(Python)
[start:end]切片赋值,扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建,本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…...
Linux中-vvv详细输出命令
在 Shell 脚本中,有时会看到某些命令后面加上 -vvv 或类似的选项。这个选项的作用通常与命令的 **调试模式** 或 **详细输出** 相关。不同的命令和工具对于选项的解释和处理方式不同,因此 -vvv 的具体含义取决于它所跟随的命令。 ### 一般来说ÿ…...
获取淘宝商品评论数据的API应用:市场调研|产品更新|用户数据
下面是一段我用item_review(获取商品评论数据)抓来的商品评论数据: "items": {"total_results": 375,"totalpage": 38,"page_size": 10,"page": "1","item": [{&quo…...
VRRP的知识点总结及实验
1、VRRP VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。 2、VRRP技术概述: 通过把几台路由设备联合组成一台虚拟的“路由设备”…...
群控系统服务端开发模式-应用开发-邮件发送工具类
一、邮件发送工具类开发 1、添加框架对应的SDK composer require phpmailer/phpmailer 2、添加工具集 在根目录下extend文件夹下创建Email文件夹,在Email文件夹下添加工具集控制并命名为EmailSender.php <?php /*** 邮件发送工具* User: 龙哥三年风水* Date: …...
pytest 的简单介绍
官方文档:pytest 文档 1. pytest 概述 pytest 是一个功能强大的 Python 测试框架,旨在简化单元测试和功能测试的编写与执行。它不仅支持简单的单元测试,还能进行更复杂的测试,如数据驱动的测试、并发测试等。pytest 支持自动化发…...
【C语言】库函数常见的陷阱与缺陷(2):字符串转化函数
目录 一、atoi 函数 1.1. 功能与用法 1.2. 陷阱与缺陷 1.2.1. 输入验证不足 1.2.2. 溢出问题 1.3 安全替代 1.4. 代码示例 二、atof 函数 2.1. 功能与用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 代码示例 三、strtol 函数 3.1. 功能与用法 3.2. 陷阱与缺陷 …...