第 83 场周赛:较大分组的位置、隐藏个人信息、连续整数求和、统计子串中的唯一字符
Q1、[简单] 较大分组的位置
1、题目描述
在一个由小写字母构成的字符串 s
中,包含由一些连续的相同字符所构成的分组。
例如,在字符串 s = "abbxxxxzyy"
中,就含有 "a"
, "bb"
, "xxxx"
, "z"
和 "yy"
这样的一些分组。
分组可以用区间 [start, end]
表示,其中 start
和 end
分别表示该分组的起始和终止位置的下标。上例中的 "xxxx"
分组用区间表示为 [3,6]
。
我们称所有包含大于或等于三个连续字符的分组为 较大分组 。
找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。
示例 1:
输入:s = "abbxxxxzzy" 输出:[[3,6]] 解释:"xxxx" 是一个起始于 3 且终止于 6 的较大分组。
示例 2:
输入:s = "abc" 输出:[] 解释:"a","b" 和 "c" 均不是符合要求的较大分组。
示例 3:
输入:s = "abcdddeeeeaabbbcd" 输出:[[3,5],[6,9],[12,14]] 解释:较大分组为 "ddd", "eeee" 和 "bbb"
示例 4:
输入:s = "aba" 输出:[]
提示:
1 <= s.length <= 1000
s
仅含小写英文字母
2、解题思路
- 遍历字符串:
- 使用一个变量
num
记录当前连续相同字符的数量。 - 遍历字符串,比较当前字符与下一个字符:
- 如果相同,则
num
加 1。 - 如果不同,则检查
num
是否大于或等于 3,如果是,则记录当前分组的区间[i - num + 1, i]
,并重置num
为 1。
- 如果相同,则
- 使用一个变量
- 记录较大分组:
- 使用一个二维数组
ret
存储所有较大分组的区间。
- 使用一个二维数组
- 返回结果:
- 返回
ret
,其中区间按起始位置递增顺序排列。
- 返回
3、代码实现
C++
class Solution {
public:vector<vector<int>> largeGroupPositions(string s) {vector<vector<int>> ret; // 存储所有较大分组的区间int n = s.size(); // 字符串的长度int num = 1; // 当前连续相同字符的数量,初始为 1// 遍历字符串for (int i = 0; i < n; ++i) {// 如果当前字符是最后一个字符,或者与下一个字符不同if (i == n - 1 || s[i] != s[i + 1]) {// 如果当前连续相同字符的数量大于或等于 3if (num >= 3) {ret.push_back({i - num + 1, i}); // 记录当前分组的区间}num = 1; // 重置当前连续相同字符的数量}// 如果当前字符与下一个字符相同else {++num; // 当前连续相同字符的数量加 1}}return ret; // 返回所有较大分组的区间}
};
Java
class Solution {public List<List<Integer>> largeGroupPositions(String s) {List<List<Integer>> result = new ArrayList<>(); // 存储所有较大分组的区间int n = s.length(); // 字符串的长度int count = 1; // 当前连续相同字符的数量, 初始为 1// 遍历字符串for (int i = 0; i < n; ++i) {// 如果当前字符是最后一个字符,或者与下一个字符不同if (i == n - 1 || s.charAt(i) != s.charAt(i + 1)) {// 如果当前连续相同字符的数量大于或等于 3if (count >= 3) {// 记录当前分组的区间List<Integer> group = new ArrayList<>();group.add(i - count + 1);group.add(i);result.add(group);}count = 1; // 重置当前连续相同字符的数量}// 如果当前字符与下一个字符相同else {count++; // 当前连续相同字符的数量加 1}}return result; // 返回所有较大分组的区间}
}
Python
class Solution:def largeGroupPositions(self, s: str) -> List[List[int]]:ret = [] # 存储所有较大分组的区间n = len(s) # 字符串的长度num = 1 # 当前连续相同字符的数量,初始为 1# 遍历字符串for i in range(n):# 如果当前字符是最后一个字符,或者与下一个字符不同if i == n - 1 or s[i] != s[i + 1]:# 如果当前连续相同字符的数量大于或等于 3if num >= 3:ret.append([i - num + 1, i]) # 记录当前分组的区间num = 1 # 重置当前连续相同字符的数量# 如果当前字符与下一个字符相同else:num += 1 # 当前连续相同字符的数量加 1return ret # 返回所有较大分组的区间
4、复杂度分析
时间复杂度:O(n),其中 n 是字符串的长度。我们只需要遍历一次该数组。
空间复杂度:O(1)。我们只需要常数的空间来保存若干变量,注意返回值不计入空间复杂度。
Q2、[中等] 隐藏个人信息
1、题目描述
给你一条个人信息字符串 s
,可能表示一个 邮箱地址 ,也可能表示一串 电话号码 。返回按如下规则 隐藏 个人信息后的结果:
电子邮件地址:
一个电子邮件地址由以下部分组成:
- 一个 名字 ,由大小写英文字母组成,后面跟着
- 一个
'@'
字符,后面跟着 - 一个 域名 ,由大小写英文字母和一个位于中间的
'.'
字符组成。'.'
不会是域名的第一个或者最后一个字符。
要想隐藏电子邮件地址中的个人信息:
- 名字 和 域名 部分的大写英文字母应当转换成小写英文字母。
- 名字 中间的字母(即,除第一个和最后一个字母外)必须用 5 个
"*****"
替换。
电话号码:
一个电话号码应当按下述格式组成:
- 电话号码可以由 10-13 位数字组成
- 后 10 位构成 本地号码
- 前面剩下的 0-3 位,构成 国家代码
- 利用
{'+', '-', '(', ')', ' '}
这些 分隔字符 按某种形式对上述数字进行分隔
要想隐藏电话号码中的个人信息:
- 移除所有 分隔字符
- 隐藏个人信息后的电话号码应该遵从这种格式:
"***-***-XXXX"
如果国家代码为 0 位数字"+*-***-***-XXXX"
如果国家代码为 1 位数字"+**-***-***-XXXX"
如果国家代码为 2 位数字"+***-***-***-XXXX"
如果国家代码为 3 位数字
"XXXX"
是最后 4 位 本地号码
示例 1:
输入:s = "LeetCode@LeetCode.com" 输出:"l*****e@leetcode.com" 解释:s 是一个电子邮件地址。 名字和域名都转换为小写,名字的中间用 5 个 * 替换。
示例 2:
输入:s = "AB@qq.com" 输出:"a*****b@qq.com" 解释:s 是一个电子邮件地址。 名字和域名都转换为小写,名字的中间用 5 个 * 替换。 注意,尽管 "ab" 只有两个字符,但中间仍然必须有 5 个 * 。
示例 3:
输入:s = "1(234)567-890" 输出:"***-***-7890" 解释:s 是一个电话号码。 共计 10 位数字,所以本地号码为 10 位数字,国家代码为 0 位数字。 因此,隐藏后的电话号码应该是 "***-***-7890" 。
提示:
s
是一个 有效 的电子邮件或者电话号码- 如果 s 是一个电子邮件:
8 <= s.length <= 40
s
是由大小写英文字母,恰好一个'@'
字符,以及'.'
字符组成- 如果 s 是一个电话号码:
10 <= s.length <= 20
s
是由数字、空格、字符'('
、')'
、'-'
和'+'
组成
2、解题思路
- 判断输入类型:
- 如果字符串包含
@
,则认为是电子邮件地址。 - 否则,认为是电话号码。
- 如果字符串包含
- 处理电子邮件地址:
- 将整个字符串转换为小写。
- 提取名字的第一个字符和最后一个字符,中间用
"*****"
替换。 - 域名部分保持不变。
- 处理电话号码:
- 移除所有非数字字符。
- 根据电话号码的长度(10-13 位)确定国家代码的长度。
- 按照规则格式化隐藏后的电话号码。
3、代码实现
C++
class Solution {
public:// 国家代码对应的前缀vector<string> country = {"", "+*-", "+**-", "+***-"};string maskPII(string s) {string res; // 存储结果int at = s.find("@"); // 查找 '@' 的位置// 如果找到了 '@' 说明是电子邮箱if (at != string::npos) {// 将整个字符串转换为小写transform(s.begin(), s.end(), s.begin(), ::tolower);// 名字部分:第一个字符 + "*****" + 最后一个字符// 域名部分:保持不变return s.substr(0, 1) + "*****" + s.substr(at - 1);}// 如果是电话号码, 移除所有非数字字符s = regex_replace(s, regex("[^0-9]"), "");// 根据电话号码的长度确定国家代码的长度int countryCodeLength = s.size() - 10;// 格式化隐藏后的电话号码return country[countryCodeLength] + "***-***-" + s.substr(s.size() - 4);}
};
Java
class Solution {// 国家代码对应的前缀private static final String[] country = { "", "+*-", "+**-", "+***-" };public String maskPII(String s) {// 查找 '@' 的位置int at = s.indexOf('@');// 如果找到了 '@' 说明是电子邮箱if (at != -1) {// 将整个字符串转换为小写s = s.toLowerCase();// 名字部分:第一个字符 + "*****" + 最后一个字符// 域名部分:保持不变return s.charAt(0) + "*****" + s.substring(at - 1);}// 如果是电话号码, 移除所有非数字字符s = s.replaceAll("[^0-9]", "");// 根据电话号码的长度确定国家代码的长度int countryCodeLength = s.length() - 10;// 格式化隐藏后的电话号码return country[countryCodeLength] + "***-***-" + s.substring(s.length() - 4);}
}
Python
class Solution:def maskPII(self, s: str) -> str:# 国家代码对应的前缀country = ["", "+*-", "+**-", "+***-"]# 判断是否是电子邮件地址if '@' in s:# 将整个字符串转换为小写s = s.lower()# 找到 '@' 的位置at = s.find('@')# 名字部分:第一个字符 + "*****" + 最后一个字符# 域名部分:保持不变return s[0] + "*****" + s[at - 1:]else:# 移除所有非数字字符s = re.sub(r'[^0-9]', '', s)# 根据电话号码的长度确定国家代码的长度countryCodeLength = len(s) - 10# 格式化隐藏后的电话号码return country[countryCodeLength] + "***-***-" + s[-4:]
4、复杂度分析
- 时间复杂度:O(n),其中
n
是字符串的长度。我们只需要遍历字符串一次。 - 空间复杂度:O(n),用于存储处理后的字符串。
Q3、[困难] 连续整数求和
1、题目描述
给定一个正整数 n
,返回 连续正整数满足所有数字之和为 n
的组数 。
示****例 1:
输入: n = 5 输出: 2 解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
示例 2:
输入: n = 9 输出: 3 解释: 9 = 4 + 5 = 2 + 3 + 4
示例 3:
输入: n = 15 输出: 4 解释: 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5
提示:
1 <= n <= 109
2、解题思路
-
问题分析:
-
我们需要找到所有连续的正整数序列,使得这些序列的和等于
n
。 -
设连续序列的长度为
k
,序列的第一个数为x
,则序列的和可以表示为:x + ( x + 1 ) + ( x + 2 ) + ⋯ + ( x + k − 1 ) = k x + k ( k − 1 ) / 2 = n x+(x+1)+(x+2)+⋯+(x+k−1)=kx+k(k−1)/2=n x+(x+1)+(x+2)+⋯+(x+k−1)=kx+k(k−1)/2=n
-
整理得: k x = n − k ( k − 1 ) / 2 kx=n−k(k−1)/2 kx=n−k(k−1)/2
-
因为
x
是正整数,所以 n − k ( k − 1 ) / 2 n−k(k−1)/2 n−k(k−1)/2 必须为正整数,且能被k
整除。
-
-
算法设计:
- 遍历可能的序列长度
k
,从1
到满足 k ( k + 1 ) ≤ 2 n k(k+1)≤2n k(k+1)≤2n 的最大值。 - 对于每个
k
,检查 n − k ( k − 1 ) / 2 n−k(k−1)/2 n−k(k−1)/2 是否能被k
整除。 - 如果满足条件,则存在一个长度为
k
的连续序列。
- 遍历可能的序列长度
-
优化:
- 对于奇数
k
,直接检查n % k == 0
。 - 对于偶数
k
,检查n % k != 0
且2n % k == 0
。
- 对于奇数
3、代码实现
C++
class Solution {
public:int consecutiveNumbersSum(int n) {int ans = 0; // 记录满足条件的组数int bound = 2 * n; // 确定 k 的上界// 遍历可能的 kfor (int k = 1; k * (k + 1) <= bound; k++) {// 检查是否存在长度为 k 的连续序列, 如果存在,组数加 1if (isKConsecutive(n, k)) {ans++;}}return ans; // 返回结果}bool isKConsecutive(int n, int k) {if (k % 2 == 1) { // 如果 k 是奇数return n % k == 0; // 检查 n 是否能被 k 整除} else { // 如果 k 是偶数return n % k != 0 && 2 * n % k == 0; // 检查 n 是否满足偶数条件}}
};
Java
class Solution {public int consecutiveNumbersSum(int n) {int ans = 0; // 记录满足条件的组数int bound = 2 * n; // 确定 k 的上界// 遍历可能的 kfor (int k = 1; k * (k + 1) <= bound; k++) {// 检查是否存在长度为 k 的连续序列, 如果存在,组数加 1if (isKConsecutive(n, k)) {ans++;}}return ans; // 返回结果}private boolean isKConsecutive(int n, int k) {// 如果 k 是奇数if (k % 2 == 1) {return n % k == 0; // 检查 n 是否能被 k 整除}// 如果 k 是偶数else {return n % k != 0 && 2 * n % k == 0; // 检查 n 是否满足偶数条件}}
}
Python
class Solution:def consecutiveNumbersSum(self, n: int) -> int:ans = 0 # 记录满足条件的组数bound = 2 * n # 确定 k 的上界k = 1while k * (k + 1) <= bound: # 遍历可能的 kif self.is_k_consecutive(n, k): # 检查是否存在长度为 k 的连续序列ans += 1 # 如果存在,组数加 1k += 1return ans # 返回结果def is_k_consecutive(self, n: int, k: int) -> bool:if k % 2 == 1: # 如果 k 是奇数return n % k == 0 # 检查 n 是否能被 k 整除else: # 如果 k 是偶数return n % k != 0 and 2 * n % k == 0 # 检查 n 是否满足偶数条件
4、复杂度分析
- 时间复杂度:
- 遍历
k
的范围是 1 ≤ k ≤ s q r ( 2 n ) 1≤k≤sqr(2n) 1≤k≤sqr(2n),因此时间复杂度为 sqr(n)。
- 遍历
- 空间复杂度:
- 只使用了常数级别的额外空间,因此空间复杂度为 O ( 1 ) O(1) O(1)。
Q4、[困难] 统计子串中的唯一字符
1、题目描述
我们定义了一个函数 countUniqueChars(s)
来统计字符串 s
中的唯一字符,并返回唯一字符的个数。
例如:s = "LEETCODE"
,则其中 "L"
, "T"
,"C"
,"O"
,"D"
都是唯一字符,因为它们只出现一次,所以 countUniqueChars(s) = 5
。
本题将会给你一个字符串 s
,我们需要返回 countUniqueChars(t)
的总和,其中 t
是 s
的子字符串。输入用例保证返回值为 32 位整数。
注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计 s
的所有子字符串中的唯一字符)。
示例 1:
输入: s = "ABC" 输出: 10 解释: 所有可能的子串为:"A","B","C","AB","BC" 和 "ABC"。其中,每一个子串都由独特字符构成。所以其长度总和为:1 + 1 + 1 + 2 + 2 + 3 = 10
示例 2:
输入: s = "ABA" 输出: 8 解释: 除了 countUniqueChars("ABA") = 1 之外,其余与示例 1 相同。
示例 3:
输入:s = "LEETCODE" 输出:92
提示:
1 <= s.length <= 105
s
只包含大写英文字符
2、解题思路
- 问题分析:
- 我们需要统计所有子字符串中的唯一字符的总和。
- 直接枚举所有子字符串并计算唯一字符的个数会超时,因为子字符串的数量是 O(n2)。
- 优化思路:
- 对于每个字符
c
,计算它在多少个子字符串中是唯一的。 - 对于字符
c
,假设它在字符串中的位置为arr[0], arr[1], ..., arr[k-1]
,则:- 对于位置
arr[i]
,它作为唯一字符的子字符串的左边界范围是(arr[i-1], arr[i]]
,右边界范围是[arr[i], arr[i+1])
。 - 因此,位置
arr[i]
对结果的贡献是(arr[i] - arr[i-1]) * (arr[i+1] - arr[i])
。
- 对于位置
- 对于每个字符
- 算法步骤:
- 使用哈希表记录每个字符在字符串中的所有位置。
- 对于每个字符,计算它在所有子字符串中作为唯一字符的贡献,并累加到结果中。
3、代码实现
C++
class Solution {
public:int uniqueLetterString(string s) {unordered_map<char, vector<int>> index; // 记录每个字符串中的所有位置for (int i = 0; i < s.size(); ++i) {index[s[i]].emplace_back(i); // 将字符的位置加入哈希表}int ret = 0; // 记录结果// 遍历哈希表中的每个字符for (auto&& [_, arr] : index) {arr.insert(arr.begin(), -1); // 在数组开头插入 -1, 表示左边界arr.emplace_back(s.size()); // 在数组末尾插入 s.size(), 表示右边界for (int i = 1; i < arr.size() - 1; ++i) {// 计算当前位置作为唯一字符的贡献ret += (arr[i] - arr[i - 1]) * (arr[i + 1] - arr[i]);}}return ret;}
};
Java
class Solution {public int uniqueLetterString(String s) {Map<Character, List<Integer>> index = new HashMap<>(); // 记录每个字符在字符串中的所有位置for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);index.computeIfAbsent(c, k -> new ArrayList<>()).add(i); // 将字符的位置加入哈希表}int res = 0; // 记录结果for (List<Integer> arr : index.values()) { // 遍历哈希表中的每个字符arr.add(0, -1); // 在列表开头插入 -1,表示左边界arr.add(s.length()); // 在列表末尾插入 s.length(),表示右边界for (int i = 1; i < arr.size() - 1; i++) { // 遍历字符的每个位置// 计算当前位置作为唯一字符的贡献res += (arr.get(i) - arr.get(i - 1)) * (arr.get(i + 1) - arr.get(i));}}return res; // 返回结果}
}
Python
class Solution:def uniqueLetterString(self, s: str) -> int:index = {} # 记录每个字符在字符串中的所有位置for i, c in enumerate(s):if c not in index:index[c] = []index[c].append(i) # 将字符的位置加入字典res = 0 # 记录结果for arr in index.values(): # 遍历字典中的每个字符arr = ([-1] + arr + [len(s)]) # 在列表开头插入 -1,表示左边界;在列表末尾插入 len(s),表示右边界for i in range(1, len(arr) - 1): # 遍历字符的每个位置# 计算当前位置作为唯一字符的贡献res += (arr[i] - arr[i - 1]) * (arr[i + 1] - arr[i])return res # 返回结果
4、复杂度分析
- 时间复杂度:
- 遍历字符串并记录字符位置:O(n)。
- 遍历哈希表中的每个字符并计算贡献:每个字符的位置数量为 O(n),总时间复杂度为 O(n)。
- 总时间复杂度:O(n)。
- 空间复杂度:
- 哈希表存储字符的位置:O(n)。
- 总空间复杂度:O(n)。
相关文章:
第 83 场周赛:较大分组的位置、隐藏个人信息、连续整数求和、统计子串中的唯一字符
Q1、[简单] 较大分组的位置 1、题目描述 在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。 例如,在字符串 s "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z&qu…...
NY244NY249美光闪存颗粒NY252NY256
NY244NY249美光闪存颗粒NY252NY256 美光闪存颗粒技术解析:从架构创新到性能突围 在数据中心轰鸣的服务器阵列中,某款新型存储颗粒正悄然改变着数据吞吐的规则。以NY系列为代表的美光闪存,凭借3D NAND架构与电荷捕获技术的深度融合ÿ…...
MCP本地高效与云端实时:stdio 与 HTTP+SSE 传输机制深度对比
概览 模型上下文协议(MCP)定义了客户端与服务器之间通信的统一标准,所有消息均采用 JSON-RPC 2.0 格式进行封装,并在此基础上支持两种传输机制:stdio(标准输入/输出) 与 HTTPSSE(Se…...
[IP地址科普] 服务器公网IP、私网IP、弹性IP是什么?区别与应用场景详解
更多服务器知识,尽在hostol.com 当我们谈论让一台服务器连接到互联网,或者让服务器上的网站、应用能够被用户访问时,IP 地址是绝对绕不开的核心概念。它就像是每台联网设备的唯一“身份证号码”和“邮政编码”,使得数据包能够在浩…...
【Python】在vscode利用pyinstaller中的.spec文件把py项目打包为.exe实现非py环境下使用的操作步骤
【需要打包的项目结构-简单】 【打包步骤】 【1-将图标以.ico的格式保存在项目中】 可以用.jpg或.png的图像进行重名,注意要和项目在同一个路径下 【2-创建并填写main.sepc文件】 在终端输入以下指令自动创建main.sepc文件,会自动生成标准的文件 pyi…...
MySQL如何查看某个表所占空间大小?(表空间大小查看方法)
文章目录 一、使用SQL查询查看表空间1.1 查询所有表的大小(包括数据和索引)1.2 查询特定数据库的表大小1.3 查询单个表的详细空间信息 二、使用命令行工具查看表空间2.1 使用mysql客户端查询2.2 查看物理文件大小(适用于MyISAM/InnoDB&#x…...
[数据结构]7. 堆-Heap
堆-Heap 1. 介绍2. 堆的实现3. 堆操作InitlilzeDestorySwapPushPopTopEmptySizeAdjustUpAdjustDown 4. HeapSort5. Top-K 1. 介绍 堆(heap) 是一种满足特定条件的完全二叉树。 小顶堆(min heap):任意节点的值 ≤ 其子…...
对心理幸福感含义的探索 | 幸福就是一切吗?
注:机翻,未校。 Happiness Is Everything, or Is It? Explorations on the Meaning of Psychological Well-Being 幸福就是一切吗?对心理幸福感含义的探索 Journal of Personality and Social Psychology 1989, Vol. 57, No. 6,1069-1081 …...
Java应用OOM排查:面试通关“三部曲”心法
开篇点题:OOM——Java应用的“内存爆仓”警报 OOM (OutOfMemoryError) 是啥病?想象一下,你的Java应用程序是一个大仓库,内存就是仓库的存储空间。如果货物(程序运行时创建的对象)越来越多,超出了…...
第28周——InceptionV1实现猴痘识别
前言 🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、前期准备 1.检查GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision im…...
云上玩转 Qwen3 系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用
本文详细介绍了如何使用 LangStudio 和 Qwen3 构建基于 MCP 协议的 Hologres ChatBI 智能 Agent 应用。该应用通过将 Agent、MCP Server 等技术和阿里最新的推理模型 Qwen3 编排在一个应用流中,为大模型提供了 MCPOLAP 的智能数据分析能力,使用自然语言即…...
Android开发-在应用之间共享数据
在Android系统中,应用之间的隔离机制(沙箱机制)保障了系统的安全性与稳定性。然而,在实际开发中,我们经常需要实现跨应用的数据共享,例如: 从一个应用向另一个应用传递用户信息;多个…...
MySQL-数据库分布式XA事务
准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axonMySQL数据库XA事务的SQL语法如下: XA {START| BEGIN} xid {JOIN | RESUME} XA END xid {SUSPEND [ FOR MIGRATE]} XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER 完…...
如何快速入门-衡石科技分析平台
快速指南 创建管理员账号 按照文档安装成功之后,假设安装所在服务器 IP 是<Server IP>,端口是<Server Port>,则可以通过浏览器访问http://<Server IP>:<Server Port>/ 访问衡石分析平台,如果正常&a…...
20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤
20250515通过以太网让VLC拉取视熙科技的机芯的rtsp视频流的步骤 2025/5/15 20:26 缘起:荣品的PRO-RK3566适配视熙科技 的4800W的机芯。 1080p出图预览的时候没图了。 通过105的机芯出图确认 荣品的PRO-RK3566 的硬件正常。 然后要确认 视熙科技 的4800W的机芯是否出…...
OpenCV CUDA模块中矩阵操作-----矩阵最大最小值查找函数
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV的CUDA模块中,矩阵最大最小值查找操作用于快速获取矩阵中的全局最小值、最大值及其位置。这些函数对于图像处理任务特别有用…...
OpenCv高阶(4.0)——案例:海报的透视变换
文章目录 前言一、工具函数模块1.1 图像显示函数1.2 保持宽高比的缩放函数1.3 坐标点排序函数 二、透视变换核心模块2.1 四点透视变换实现 三、主流程技术分解3.1 图像预处理3.2 轮廓检测流程3.3 最大轮廓处理 四、后处理技术4.1 透视变换4.2 形态学处理 五、完整代码总结 前言…...
JavaScriptWeb API (DOM和BOM操作)
Web API (基础部分) 作用: 使用 JS 去操作 html 和浏览器 分类: DOM 和 BOM DOM: 操作 HTML 文档的 APIBOM: 操作浏览器的 API DOM(文档对象模型) 是用来呈现以及与任意 HTML 或 XML 文档进行交互的 API 作用: 开发网页内容特效和实现用户交互 动态创建 HTML 元素改变 HTML…...
AM-Thinking-v1论文解读:以32B规模推进推理前沿
《AM-Thinking-v1: Advancing the Frontier of Reasoning at 32B Scale》论文解读 一、引言 过去半年,大型语言模型(LLMs)在推理领域(如数学问题求解和代码生成)取得了显著进展,扩大了其在现实场景中的应…...
Spark--RDD中的转换算子
1、算子的简单介绍 Transformation(转换)算子:根据数据集创建一个新的数据集,计算后返回一个新RDD,例如一个rdd进行map操作后生了一个新的rdd。 Action(动作)算子:对rdd结果计算后返回一个数值value给驱动程序(driver),例如collect算子将数据集的所有元素收集完成返回给驱动程…...
【文件上传漏洞】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文件上传漏洞 定义客户端js检测 服务器检测后缀黑名单白名单 检测内容其他 定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服…...
electron进程通信
electron进程通信 模式 1:渲染器进程到主进程(单向) send和on 1.渲染器进程调用方法 click setTitle2.预加载进程暴露setTile方法 setTitle: (title) > ipcRenderer.send(set-title, title),3.主进程监听到方法 ipcMain.on(set-title…...
[C++面试] lambda面试点
一、入门 1、什么是 C lambda 表达式?它的基本语法是什么? Lambda 是 C11 引入的匿名函数对象,用于创建轻量级的可调用对象。 [捕获列表] (参数列表) mutable(可选) 异常声明(可选) -> 返回…...
【愚公系列】《Manus极简入门》040-科技与组织升级顾问:“项目掌舵人”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
2505C++,py和go调用雅兰亭库的协程工具
原文 神算调用C 一般调用pybind11封装的C库实现神算调用C库,pybind11封装c的接口很简单. 创建一个py_example.cpp文件 #include <pybind11/pybind11.h> #include <string> namespace py pybind11; PYBIND11_MODULE(py_example, m) {m.def("hello", …...
题解:P12207 [蓝桥杯 2023 国 Python B] 划分
链接 题目描述 给定 40 个数,请将其任意划分成两组,每组至少一个元素。每组的权值为组内所有元素的和。划分的权值为两组权值的乘积。请问对于以下 40 个数,划分的权值最大为多少。 5160 9191 6410 4657 7492 1531 8854 1253 4520 9231126…...
英迈国际Ingram Micro EDI需求分析
Ingram Micro(英迈国际)成立于1979年,是全球领先的技术和供应链服务提供商,总部位于美国加州尔湾。公司致力于连接全球的技术制造商与渠道合作伙伴,业务涵盖IT分销、云服务、物流和供应链优化等多个领域。Ingram Micro…...
【Linux】网络基础与socket编程基础
一.网络发展 计算机的出现是在网络之前的。而网络产生之初就是为了解决局部计算机无法交互的问题。所以,网络在诞生之初,最先出现的就是我们的局域网LAN,用来结局局部多台计算机的通信问题。 而随着时间的推移,局域网已经不能满…...
漂亮的收款打赏要饭网HTML页面源码
这是一款专为个人收款及接受打赏设计的HTML页面,其设计简洁且美观。 下载地址:漂亮的收款打赏要饭网HTML页面源码 备用地址:漂亮的收款打赏要饭网HTML页面源码...
【图书推荐】几本人工智能实用性图书
《OpenCV计算机视觉开发实践:基于Python》 《OpenCV计算机视觉开发实践:基于Python》【摘要 书评 试读】- 京东图书 《PyTorch深度学习与计算机视觉实践》 《PyTorch深度学习与计算机视觉实践(人工智能技术丛书)》(王晓华)【摘要 书评 试读…...
uniapp+vite+cli模板引入tailwindcss
目前vitecli方式用的都是官方提供的模板,vite版本还是4.14版本,较旧,而tailwindcss已经有了4版本,实际发现引入最新版会报错,因而继续使用3.3.5版本 pnpm install tailwindcss3.3.5 uni-helper/vite-plugin-uni-tail…...
【使用 C# 获取 USB 设备信息及进行通信】
文章目录 使用 C\# 获取 USB 设备信息及进行通信为什么需要获取 USB 设备信息?方法一:使用 C\# 库 (推荐)1. HidSharp2. LibUsbDotNet 方法二:直接调用 Windows API (P/Invoke)理解设备通信协议 (用于数据交换)总结 使用 C# 获取 USB 设备信息…...
Spring Cloud探索之旅:从零搭建微服务雏形 (Eureka, LoadBalancer 与 OpenFeign实战)
引言 大家好!近期,我踏上了一段深入学习Spring Cloud构建微服务应用的旅程。我从项目初始化开始,逐步搭建了一个具备服务注册与发现、客户端负载均衡以及声明式服务调用功能的基础微服务系统。本文旨在记录这一阶段的核心学习内容与实践成果…...
四维时空数据安全传输新框架:压缩感知与几何驱动跳频
四维时空数据安全传输新框架:压缩感知与几何驱动跳频 1. 引言 1.1 研究背景 随着三维感知技术(如激光雷达、超宽带定位)与动态数据流(如无人机集群、工业物联网)的快速发展,四维时空数据(三维…...
CSS相关知识补充
:root伪类 css自定义变量和var()引用自定义变量 https://developer.mozilla.org/zh-CN/docs/Web/CSS/var 在 SCSS 中,变量的声明和使用是用 $ 符号,比如: $primary-color: #ff5722;.button {color: $primary-color; }SCSS 里没有 var() 这…...
DeepSeek 赋能物联网:从连接到智能的跨越之路
目录 一、引言:物联网新时代的开启二、DeepSeek 技术揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技术优势 三、DeepSeek 与物联网的融合之基3.1 物联网发展现状与挑战3.2 DeepSeek 带来的变革性突破 四、DeepSeek 在物联网的多元应用场景4.1 智慧电力:开启能源…...
谷歌量子计算机:开启计算新纪元
量子计算的黎明 原始尺寸更换图片 在科技迅猛发展的时代,量子计算作为前沿领域,正逐渐崭露头角,吸引着全球无数科研人员与科技巨头的目光。它宛如一把开启未来科技大门的钥匙,为解决诸多复杂难题提供了前所未有的可…...
桃芯ingchips——windows HID键盘例程无法同时连接两个,但是安卓手机可以的问题
目录 环境 现象 原理及解决办法 环境 PC:windows11 安卓:Android14 例程使用的是HID Keyboard,板子使用的是91870CQ的开发板,DB870CC1A 现象 连接安卓手机时并不会出现该现象,两个开发板都可以当做键盘给手机发按…...
AMC8 -- 2009年真题解析(中文解析)
Problem 1 Answer: E 中文解析: Bridget最后有4个,给了Cassie3个, 则给Cassie之前有7个。在此之前给了一半的苹果给Ann, 那么在给Anna之前,他有7*214个苹果。 因此答案是E。 Problem 2 Answer: D 中文解析࿱…...
深入解析CountDownLatch的设计原理与实现机制
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、概述 CountDownLatch是Java并发包(java.util.concurrent)中用于协调多线程同步的核心工具类,其设计目标是允许一个或…...
缓存的相关内容
缓存是一种介于数据永久存储介质与数据应用之间数据临时的存储介质 实用化保存可以有效地减少低俗数据读取的次数 (例如磁盘IO), 提高系统性能 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间 spring boot中提供了缓存技术, 方便…...
JVM方法区核心技术解析:从方法区到执行引擎
方法区 方法区的内部结构 在经典方法区设计中,主要存储以下核心数据内容: 一、类型信息 方法区维护的类型信息包含以下要素: 类全称标识 类名称(含完整包路径)直接父类的完全限定名(包含完整包路径&am…...
AIbase推出全球MCP Server集合平台 收录超12万个MCP服务器客户端
2025年,AI领域迎来了一项重要的技术进展——MCP(Model Context Protocol,模型上下文协议)的广泛应用。全球MCP Server集合平台AIbase(https://mcp.aibase.cn/)应运而生,为AI开发者提供了一站式的MCP服务器和客户端整合…...
Python训练打卡Day22
复习日: 1.标准化数据(聚类前通常需要标准化) scaler StandardScaler() X_scaled scaler.fit_transform(X) StandardScaler() :这部分代码调用了 StandardScaler 类的构造函数。在Python中,当你在类名后面加上括号…...
【ALINX 实战笔记】FPGA 大神 Adam Taylor 使用 ChipScope 调试 AMD Versal 设计
本篇文章来自 FPGA 大神、Ardiuvo & Hackster.IO 知名博主 Adam Taylor。在这里感谢 Adam Taylor 对 ALINX 产品的关注与使用。为了让文章更易阅读,我们在原文的基础上作了一些灵活的调整。原文链接已贴在文章底部,欢迎大家在评论区友好互动。 在上篇…...
【数据结构入门训练DAY-35】棋盘问题
本次训练聚焦于使用深度优先搜索(DFS)算法解决棋盘上的棋子摆放问题。题目要求在一个可能不规则的nn棋盘上摆放k个棋子,且任意两个棋子不能位于同一行或同一列。输入包括棋盘大小n和棋子数k,以及棋盘的形状(用#表示可放…...
张 提示词优化(相似计算模式)深度学习中的损失函数优化技巧
失函数的解释 损失函数代码解析 loss = -F.log_softmax(logits[...
Elasticsearch 常用语法手册
🧰 Elasticsearch 常用语法手册 📚 目录 索引操作文档操作查询操作聚合查询健康与状态查看常见问题与注意事项 🔹 索引操作 查询全部索引 GET _search创建索引 PUT /es_db创建索引并设置分片数和副本数 PUT /es_db {"settings&quo…...
华宇TAS应用中间件与亿信华辰多款软件产品完成兼容互认证
近日,华宇TAS应用中间件与亿信华辰多款产品成功通过兼容互认证测试,双方产品在功能协同、性能优化及高可用性等维度实现全面适配,将为用户提供更加稳定、高效、安全的国产化解决方案。 此次认证也标志着华宇在国产化生态适配领域再添重要里程…...
AI大模型从0到1记录学习numpy pandas day24
第 1 章 环境搭建 1.1 Anaconda 1.1.1 什么是Anaconda Anaconda官网地址:https://www.anaconda.com/ 简单来说,Anaconda Python 包和环境管理器(Conda) 常用库 集成工具。它适合那些需要快速搭建数据科学或机器学习开发环境的用…...