news 2026/4/2 4:27:23

通配*|滚动hash

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通配*|滚动hash

lc2489

lc1983

差值前缀和+枚举右维护左

class Solution {
public:
int widestPairOfIndices(vector<int>& nums1, vector<int>& nums2)
{
int n=nums2.size();
vector<int> d(n+1);
unordered_map<int,int> hash;
hash[0]=0;//init
int ret=0;
for(int i=1;i<=n;i++)
{
d[i]=d[i-1]+nums1[i-1]-nums2[i-1];
if(hash.count(d[i]))
ret=max(ret,i-hash[d[i]]);
else
hash[d[i]]=i;
}
return ret;
}
};

lc3606

先按下标排序,在转换为字符串

class Solution {
public:
vector<string> validateCoupons(vector<string>& code, vector<string>& businessLine, vector<bool>& isActive)
{
int n=code.size();
vector<int> ret;
set<string> set={"electronics","grocery","pharmacy","restaurant"};
unordered_map<string,int> hash;
unordered_map<int,string> hash2;

for(int i=0;i<n;i++)
{
if(isActive[i]==true)
{
if(set.count(businessLine[i]))
{
bool check=true;
string tmp=code[i];
for(int j=0;j<code[i].size();j++)
{
if(isalnum(tmp[j]) || tmp[j]=='_')
check=true;
else
{
check=false;
break;
}
}
if(check && !tmp.empty())
{
ret.push_back(i);
}
}
}
}


sort(ret.begin(),ret.end(),[&](int& a,int& b)
{
string b1=businessLine[a],b2=businessLine[b];
if(b1!=b2)
{
return b1<b2;
}
return code[a]<code[b];
});
//先按下标排序,在转换为字符串
vector<string> ans;
for(auto& r:ret)
ans.push_back(code[r]);

return ans;

}
};

lc1554

滚动hash优化

unordered_map<int, vector<int>> hs;

hash给每个字符串“遮掉一位”做标记

遇到重复标记时,真实验证这俩串是不是只遮掉的那一位不同,是就返回true

class Solution {
public:
bool differByOne(vector<string>& dict) {
// self-defined hash, mod 5801, any big prime fine
// strict, check if there is hash clashing

int mod(5801), m(dict[0].length()), mod_pows[m];
mod_pows[0] = 1;
for (int i = 1; i < m; ++i)
mod_pows[i] = mod_pows[i - 1] * 27 % mod;

unordered_map<int, vector<int>> hs; // we can also use deque<int> here

for (int k = 0; k < dict.size(); ++k) {
int h = 0;
for (char& c: dict[k])
h = (27 * h + c - 'a' + 1) % mod;
for (int i = 0; i < m; ++i) {
int t = (h - mod_pows[m - i - 1] * (dict[k][i] - 'a' + 1) % mod + mod) % mod;
if (hs.count(t)) {
for (const int& x: hs[t]) {
int kk(x / m), ii(x % m);
if (ii == i) {
bool checked = true;
for (int p = 0; p < m; ++p) {
if (p == i) continue;
if (dict[k][p] != dict[kk][p]) {
checked = false;
break;
}
}
if (checked) return true;
}
}
}
hs[t].push_back(m * k + i);
}
}

return false;
}
};

mle 通配* hash

class Solution {

public:

bool differByOne(vector<string>& dict) {

if (dict.empty()) return false;

int len = dict[0].size();

unordered_set<string> seen;

for (auto& s : dict) {

// 通配* hash

for (int i = 0; i < len; ++i) {

string key = s;

key[i] = '*'; // 把第i位替换为通配符,代表忽略该位的差异

if (seen.count(key)) {

return true;

}

seen.insert(key);

}

}

return false;

}

};

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 2:46:31

大模型长记忆的三个误区:一个架构师眼中的记忆系统本质

深夜&#xff0c;我面对又一个因记忆混乱而“胡言乱语”的智能体&#xff0c;突然意识到&#xff1a;我们给AI装上的可能不是记忆&#xff0c;而是一个堆满杂物的仓库。凌晨两点&#xff0c;我的智能体在连续对话30轮后&#xff0c;突然把用户十分钟前明确拒绝的方案又推了出来…

作者头像 李华
网站建设 2026/3/14 17:55:36

字节跳动AHN-GDN技术:长文本处理效率革命,内存占用降74%

字节跳动AHN-GDN技术&#xff1a;长文本处理效率革命&#xff0c;内存占用降74% 【免费下载链接】AHN-GDN-for-Qwen-2.5-Instruct-7B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/AHN-GDN-for-Qwen-2.5-Instruct-7B 导语&#xff1a;大模型长文本处理…

作者头像 李华
网站建设 2026/3/11 5:35:08

63、Python 中二进制数据文本编码与邮件处理详解

Python 中二进制数据文本编码与邮件处理详解 1. 二进制数据文本编码方法 在处理二进制数据时,常常需要将其编码为文本形式,以便在各种系统和网络中传输。常见的编码方式有 MIME 编码和 UU 编码。 1.1 MIME 编码相关函数 MIME 编码提供了两种主要函数来处理数据: - en…

作者头像 李华
网站建设 2026/3/30 7:59:16

73、深入探索Jython:嵌入、编译与程序分发

深入探索Jython:嵌入、编译与程序分发 1. 嵌入Jython到Java中 在Java中嵌入Jython可以让我们在Java应用程序里执行Python代码,实现两者的优势互补。 1.1 初始化与解释器创建 首先,需要初始化 PySystemState 并创建 PythonInterpreter 实例。示例代码如下: PySyst…

作者头像 李华
网站建设 2026/3/29 20:51:31

vue基于Spring Boot的智能家居控制应用的设计与实现_34t7gk0u-java毕业设计

目录已开发项目效果实现截图开发技术系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/3/26 15:01:34

比手动编码快10倍:AI生成plt.plot代码技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个效率对比工具&#xff0c;分别用传统方法和AI辅助方法创建相同的3D曲面图&#xff08;zsin(x)cos(y)&#xff09;。传统方法要求完整手写代码&#xff0c;AI方法使用自然语…

作者头像 李华