当前位置: 首页 > news >正文

牛客——接头密匙

题目链接:牛客--接头密匙

该题是一个很显然的前缀树问题,只需要构建a中所有数组对应的前缀树,之后求b所处前缀个数即可。关于前缀树的构建,可以观看左老师算法讲解045的视频,简单来讲就是用特殊字符将实际数据隔开,同时将实际数据离散化。示例题解如下:

class Solution {private:static constexpr int N = 1e6 + 1;vector<vector<int>> trie = vector<vector<int>>(N,vector<int>(12));   // 0 - 9 & '-' & '#'vector<int> passArr = vector<int>(N);vector<int> endArr = vector<int>(N);int cnt;int getPath(char c) {if (c == '-') {return 10;}if (c == '#') {return 11;}return c - '0';}void buildTrie() {cnt = 1;}void reBuildTrie() {for (int i = 0; i < cnt; ++i) {fill(&trie[i][0], &trie[i][0] + 12, 0);passArr[i] = 0;endArr[i] = 0;}}void insert(const string& word) {int cur = 1, path;passArr[cur]++;for (char c : word) {path = getPath(c);if (trie[cur][path] == 0) {trie[cur][path] = ++cnt;}cur = trie[cur][path];passArr[cur]++;}endArr[cur]++;}int prefixCount(const string& word) {int cur = 1, path;for (char c : word) {path = getPath(c);if (trie[cur][path] == 0) {return 0;}cur = trie[cur][path];}return passArr[cur];}public:vector<int> countConsistentKeys(vector<vector<int> >& b,vector<vector<int> >& a) {// 建立前缀树buildTrie();for (int i = 0; i < a.size(); ++i) {// a[i] = vector<int>string s = "";for (int j = 1; j < a[i].size(); j++) {s = s + std::to_string(a[i][j] - a[i][j - 1]) + "#";}insert(s);}vector<int> ans;// 搜索前缀树for (int i = 0; i < b.size(); ++i) {// b[i] = vector<int>string pre = "";for (int j = 1; j < b[i].size(); ++j) {pre = pre + std::to_string(b[i][j] - b[i][j - 1]) + "#";}ans.push_back(prefixCount(pre));}reBuildTrie();return ans;}
};

http://www.dtcms.com/a/310462.html

相关文章:

  • .net依赖注入框架 Autofac和MEF的对比
  • 如何在企业微信中打开外部网页或者自己开发的本地网页
  • vue+ts 基础面试题 (四)
  • 『React』 组件通信全攻略
  • 工业环境中无人叉车安全标准深度解析
  • django的数据库原生操作sql
  • 洛谷做题3:P5711 【深基3.例3】闰年判断
  • 浪潮信息PMO负责人时军受邀为PMO大会主持人
  • 如何最简单、通俗地理解线性回归算法? 线性回归模型在非线性数据上拟合效果不佳,如何在保持模型简单性的同时改进拟合能力?
  • 【C++】类和对象 上
  • JP3-3-MyClub后台后端(二)
  • JavaScript 深拷贝:从基础到完美实现
  • 使用Jeecg低代码平台实现计划管控系统建设方案--1项目前后端搭建
  • 《义龙棒球科普》棒球是韩国的国球吗·棒球1号位
  • 德国威乐集团亚太中东非洲PMO负责人和继明受邀为PMO大会主持人
  • 逻辑回归算法 银行贷款资格判断案例,介绍混淆矩阵与正则化惩罚
  • Google机器学习基础(语言模型)
  • 第13届蓝桥杯Python青少组选拔赛(STEMA)2021年8月真题
  • osloader!DoGlobalInitialization函数分析之HW_CURSOR--NTLDR源代码分析之设置光标
  • Python编程基础与实践
  • Linux 用户与组管理及权限委派
  • 自由学习记录(75)
  • [2025CVPR-图象处理方向]Z-Magic:零样本多属性引导图像创建器
  • SpringBoot与Rust实战指南
  • 深度SEO优化的方式有哪些,从技术层面来说
  • GitHub 趋势日报 (2025年07月31日)
  • 【实战】Dify从0到100进阶--插件开发(1)Github爬取插件
  • ansible.cfg 配置文件生成
  • [css]切角
  • 第十四天:C++内存管理