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

计算方法a

0、综述

共 45 题
1、入门 (5题)
(1)输入处理(重要):HJ5 进制转换
(2)排列组合:NC61 两数之和
(3)快速排序:HJ3 明明的随机数
(4)哈希表:HJ10 字符个数统计
(5)递归:NC68 跳台阶
2、字符串操作(9题)
(1)HJ17 坐标移动
(2)HJ20 密码验证合格
(3)HJ23 删除字符串中出现次数最少的字符
(4)HJ33 整数与IP地址间的转换
(5)HJ101 输入整型数组和排序标识
(6)leetcode 1839 最长子字符串
(7)HJ46 截取字符串
(8)NC149字符串匹配KMP算法
(9)NC100 字符串转换成整数
3、数组(1题)
(1)HJ70 矩阵乘法计算量估算
4、查找排序(7题)
(1)HJ8 合并表记录
(2)HJ14 字符串排序
(3)HJ27 查找兄弟单词
(4)NC37.合并区间
(5)HJ68.成绩排序
(6)HJ65 查找两个字符串a,b中的最长公共子串
(7)JZ4 二维数组中的查找
5、栈(3题)
(1)NC52.括号序列
(2)leetcode 1614.括号的最大嵌套深度
(3)NC175合法的括号字符串
6、排列组合(2题)
(1)leetcode 面试题08.08.有重复字符串的排列组合
(2)leetcode 77.组合
7、双指针(3题)
(1)leetcode674 最长连续递增序列
(2)NC17 最长回文子串
(3)NC28 最小覆盖子串
8、深搜(1题)
(1)HJ41 称砝码
9、 二叉树(2题)
(1) leetcode 剑指offer 32 — II.从上到下打印二叉树 II
(2) leetcode 剑指offer 32 — III.从上到下打印二叉树 II
10、链表(3题)
(1)HJ48从单向链表中删除指定值的节点
(2)leetcode 160 相交链表
(3)剑指 Offer JZ25合并两个排序的链表
~11、其他(9题)
(1)leetcode 994.腐烂的橘子 链接
(2)leetcode 204.计数质数 链接
(3)HJ25、数据分类处理 链接
(4)HJ29 字符串加解密 链接
(5)剑指 Offer JZ61、扑克牌中的顺子 链接
(6)HJ43 迷宫问题 链接
(7)leetcode 322、零钱兑换 链接
(8)火锅问题 csdn搜索
(9)岛屿问题 leetcode 200 岛屿数量 链接(技术面试高频考点)

牛客华为机试题库 链接 HJ
牛客在线编程算法篇 链接 NC
剑指offer 链接 JZ
力扣 链接

1、入门题(5题)

(0)处理输入输出

constrl=require("readline").createInterface({input:process.stdin});variter=rl[Symbol.asyncIterator]();constreadline=async()=>(awaititer.next()).value;void(asyncfunction(){constinArr=[];while((line=awaitreadline())){inArr.push(line);}handle(inArr);})();functionhandle([str,...rest]){console.log(str,rest);}

(1)输入处理(重要): HJ5 进制转换链接

/** * 将十六进制字符串转换为十进制数字 * 支持带 "0x" 或 "0X" 前缀的十六进制字符串 * * @param {string} hexString - 十六进制字符串 * @returns {number} - 对应的十进制数字 * @throws {Error} - 如果输入不是有效的十六进制字符串 */functionhexToDecimal(hexString){// 边界条件检查if(!hexString||typeofhexString!=="string"){thrownewError("Input must be a non-empty string");}// 移除前缀并转换为小写constcleanedHex=hexString.replace(/^0x|^0X/,"").toLowerCase();// 验证是否为有效的十六进制字符串if(!/^[0-9a-f]+$/.test(cleanedHex)){thrownewError("Input must be a valid hexadecimal string");}// 十六进制字符到十进制值的映射consthexCharMap={a:10,b:11,c:12,d:13,e:14,f:15};letresult=0;letpower=1;// 16^0// 从右往左遍历,计算十进制值for(leti=cleanedHex.length-1;i>=0;i--){constchar=cleanedHex[i];// 获取当前字符的十进制值constvalue=hexCharMap[char]||char;// 累加当前位的值result+=value*power;// 增加位数(16的幂次)power*=16;}returnresult;}/** * 将十六进制字符串转换为十进制数字 * 支持带 "0x" 或 "0X" 前缀的十六进制字符串 * * @param {string} hexString - 十六进制字符串 * @returns {number} - 对应的十进制数字 * @throws {Error} - 如果输入不是有效的十六进制字符串 */functionhexToDecimal2(hexString){if(!hexString||typeofhexString!=="string"){thrownewError("Input must be a non-empty string");}constresult=parseInt(hexString,16);if(isNaN(result)){thrownewError("Input must be a valid hexadecimal string");}returnresult;}

(2)排列组合: NC61 两数之和链接

functiontwoSum(numbers,target){constnumMap={};for(leti=0;i<numbers.length;i++){constcomplement=target-numbers[i];if(complementinnumMap){return[numMap[complement]+1,i+1];}numMap[numbers[i]]=i;}return[];}/* tips: {}优先于Map; 变量命名; const优先于let */

哈希表很常用

空间换时间

(3)快速排序: HJ3 明明的随机数链接

// 方法一 ACM 完整代码constrl=require("readline").createInterface({input:process.stdin});variter=rl[Symbol.asyncIterator]();constreadline=async()=>(awaititer.next()).value;void(asyncfunction(){constN=parseInt(awaitreadline());letarr=[];for(leti=0;i<N;i++){arr[awaitreadline()]=true;}// 方法1for(leti=1;i<arr.length;i++){if(arr[i]){console.log(i);}}// 方法2arr.forEach((a,i)=>a&&console.log(i));})();// 方法二letn=parseInt(awaitreadline());letarr=[];for(leti=0;i<n;i++){arr[i]=awaitreadline();}Array.from(newSet(arr)).sort((a,b)=>a-b).forEach((e)=>console.log(e));

(4)哈希表: HJ10 字符个数统计链接

// 一constrl=require("readline").createInterface({input:process.stdin});variter=rl[Symbol.asyncIterator]();constreadline=async()=>(awaititer.next()).value;void(asyncfunction(){// Write your code hereconstinArr=[];while((line=awaitreadline())){inArr.push(line);}handle(inArr);})();functionhandle([str,...rest]){console.log(newSet(str.split("")).size);}// 二constrl=require("readline").createInterface({input:process.stdin});variter=rl[Symbol.asyncIterator]();constreadline=async()=>(awaititer.next()).value;void(asyncfunction(){while((line=awaitreadline())){constset=newSet(line.split(""));console.log(set.size);}})();

(5)递归: NC68 跳台阶链接

递归 动态规划 记忆化搜索
循环的边界是非常的重要

functionclimbStairs(n){if(n<=2)returnn;letprev1=1;letprev2=2;for(leti=3;i<=n;i++){constcurrent=prev1+prev2;prev1=prev2;prev2=current;}returnprev2;}functionclimbStairs(n){if(n<3)returnn;// return jump(n - 1) + jump(n - 2)letprev1=1,prev2=2;while(n-->2){[prev1,prev2]=[prev2,prev1+prev2];}returnprev2;}

2、字符串操作(7题)

(1)HJ17 坐标移动链接

functionhandle(str){constreg=/^[ASWD]\d{1,2}$/;constres=str.split(";").reduce((prev,current)=>{if(reg.test(current)){constdirection=current.slice(0,1);constvalue=Number(current.slice(1));switch(direction){case"A":prev[0]-=value;break;case"D":prev[0]+=value;break;case"W":prev[1]+=value;break;case"S":prev[1]-=value;break;}returnprev;}else{returnprev;}},[0,0],);console.log(res.join(","));}

(2)HJ20 密码验证合格链接

functiontest(str){if(!/.{9,}/.test(str))return'NG'letsum=0if(/[a-z]/.test(str))sum++if(/[A-Z]/.test(str))sum++if(/[\d]/.test(str))sum++if(/[^\da-zA-Z]/.test(str))sum++if(sum<3)return'NG'constrepeat=/(.{3,}).*?\1/g.test(str)returnrepeat?'NG':'OK'}
// 1. 固定长度的滑动窗口// 适用于检查所有长度为 k 的子串(如原始问题中的长度为 3 的子串)。functionhasDuplicateSubstring(str){constseen=newSet();for(leti=0;i<=str.length-3;i++){constsubstring=str.slice(i,i+3);if(seen.has(substring)){returntrue;}seen.add(substring);}returnfalse;}// 2. 可变长度的滑动窗口// 适用于窗口长度不固定的问题(如最长无重复字符子串)。functionlengthOfLongestSubstring(s){constcharSet=newSet()letleft=0letmaxLen=0for(letright=0;right<s.length;right++){while(charSet.has(s[right])){charSet.delete(s
http://www.jsqmd.com/news/478382/

相关文章:

  • Gorilla安全最佳实践:保护API密钥与敏感数据的终极指南
  • 09、静态数码管实验
  • Python C扩展开发终极指南:如何实现10倍性能优化的完整方案
  • ShopXO数据库设计与优化:支撑百万级订单的架构实践
  • 终极Materialize颜色系统指南:打造专业级主题色与自定义调色方案
  • Archery数据库连接池性能优化终极指南:如何提升300%并发处理能力
  • Mac安装brew
  • PyCaret模型解释:SHAP摘要图与依赖图完全指南
  • MySQL数据恢复终极指南:my2sql与binlog2sql对比测试
  • 手把手教你安全移除 OpenClaw:全流程清理与避坑指南
  • QLoRA中的自监督学习:无标注数据的微调方法
  • React Beautiful DND 拖拽完成回调处理:实现复杂业务逻辑的最佳实践
  • Flutter B站客户端终极指南:5分钟打造完美第三方应用体验
  • 如何为非标准数学函数实现JAX自定义梯度:完整指南
  • Archery前端无障碍导航终极指南:7个键盘快捷键与焦点管理技巧
  • Gorilla社区治理结构:开源项目的决策流程与贡献者权益
  • 彻底解决JavaScript参数问题:ES6默认值与函数长度的优雅方案
  • 一文读懂DeepSeek-V2创新架构:MLA注意力与DeepSeekMoE如何实现高效推理
  • 终极指南:一文读懂Janus-1.3B的核心架构与技术突破
  • Local Moondream2效果实测:多场景图像内容识别准确率分析
  • Flutter跨平台开发:PiliPlus项目终极安装配置指南
  • Panels框架实战案例:打造属于你的沉浸式滑动面板体验
  • Gorilla技术支持指南:从社区论坛到企业级服务的支持渠道
  • 5分钟上手云监控告警:用OpenAPI规范定义API异常检测规则
  • sql函数总结(成绩在于平时,成功在于积累)最终版
  • Yi-9B 200K超长上下文实测:处理40万字文本的终极方案
  • Stable Diffusion XL 1.0开源大模型部署:灵感画廊GPU显存优化方案
  • Qwen3-4B-Thinking-GGUF高性能部署:vLLM张量并行+PagedAttention显存优化详解
  • FlexLayout核心功能全解析:百分比布局与视图引用的终极指南
  • 如何让Flashlight插件完美支持不同macOS版本:完整兼容性指南