AlgorithmHero
这个作者很懒,什么都没留下…
展开
-
华为OD机试 C++【求满足条件的最长子串的长度】
解题思路是通过滑动窗口法遍历字符串,同时维护当前窗口中的字母数量。首先检查字符串是否全是字母或全是数字,若是则直接返回 -1。然后用指针维护窗口边界,当窗口内字母数量超过一个时收缩左边界,确保每次窗口内只有一个字母。每次调整窗口后检查并更新满足条件的最长子串长度,最终返回结果。如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。1、 只包含1个字母(a-z, A~Z),其余必须是数字;2、 字母可以在子串中的任意位置;字符串(只包含字母和数字)原创 2024-05-21 08:37:16 · 3 阅读 · 0 评论 -
华为OD机试 C++【时间调度】
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。这个问题的解决思路是首先根据航空公司的缩写进行排序,然后再按照航班号的后4位数字进行排序。A市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。航班号为6为长度,后4位位纯数字,不考虑存在后4位重复的场景。原创 2024-05-17 08:33:21 · 7 阅读 · 0 评论 -
华为OD机试 C++【空闲时间】
首先按照会议开始时间对会议进行排序,然后通过遍历排序后的会议时间段,合并重叠的会议时间段,最后输出合并后的会议时间段。之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。第一行输入一个整数 n,表示会议数量。会议1开始时间, 会议1结束时间。会议2开始时间, 会议2结束时间。请计算会议室占用时间段。原创 2024-05-15 08:36:03 · 7 阅读 · 0 评论 -
华为OD机试 C++【整数求和】
遍历输入字符串的字符数组,检查每个字符是否是数字字符。如果是数字字符,则将其添加到总和中,否则检查是否是负号,如果是,则将后续数字字符转换为负数并从总和中减去。2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023。1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102。输入字符串s,输出s中包含所有整数的最小和。字符串s,只包含 a-z A-Z ±;原创 2024-05-14 08:35:41 · 59 阅读 · 0 评论 -
华为OD机试 c++【数组处理】
将输入的乱序数组转换为整数数组,并使用 Map 统计每个元素的出现次数。然后对元素进行排序,按照出现次数从高到低排序,如果出现次数相同,则按照元素值的先后顺序排序。最后将排序后的结果输出。给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。原创 2024-05-13 08:36:05 · 9 阅读 · 0 评论 -
华为OD机试 C++【文字解密】
通过正则表达式匹配 # 和 $ 运算符,并逐步替换匹配到的表达式片段为其计算结果,确保先计算 # 运算符,再计算 $ 运算符最终返回整个表达式的计算结果。#4$5 //缺少操作数。输入的字符串说明: 字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。12345678987654321$54321 //32位整数计算溢出。保证输入的字符串为合法的求值报文,例如:123#4$5#67$78。原创 2024-05-11 08:36:50 · 12 阅读 · 0 评论 -
华为OD机试 C++【火星文计算】
题目已知火星人使用的运算符为#、$,其与地球人的等价公式如下:x#y = 4*x+3*y+2x$y = 2*x+y+3其中 x、y 是无符号整数地球人公式按C语言规则计算 火星人公式中,#的优先级高于$,相同的运算符,按从左到右的顺序计算现有一段火星人的字符串报文,请你来翻译并计算结果。输入描述火星人字符串表达式(结尾不带回车换行)输入的字符串说明: 字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。例如:123#4$5#67$78用例保证字符串中,操作数与操作原创 2024-05-10 08:40:09 · 9 阅读 · 0 评论 -
华为OD机试 c++【数组去重和排序】
将输入的乱序数组转换为整数数组,并使用 Map 统计每个元素的出现次数。然后对元素进行排序,按照出现次数从高到低排序,如果出现次数相同,则按照元素值的先后顺序排序。最后将排序后的结果输出。给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。原创 2024-05-09 08:36:59 · 8 阅读 · 0 评论 -
华为OD机试 C++【求字符串中所有整数的最小和】
遍历输入字符串的字符数组,检查每个字符是否是数字字符。如果是数字字符,则将其添加到总和中,否则检查是否是负号,如果是,则将后续数字字符转换为负数并从总和中减去。2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023。1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102。输入字符串s,输出s中包含所有整数的最小和。字符串s,只包含 a-z A-Z ±;原创 2024-05-08 08:36:46 · 41 阅读 · 0 评论 -
华为OD机试 C++【测试用例执行计划】
读取特性数量、测试用例数量、特性的优先级和测试用例的覆盖特性列表。第一行输入为 N 和 M,N 表示特性的数量,0 < N ≤ 100,M 表示测试用例的数量,0 < M ≤ 100,之后 N 行表示特性 ID=1 到特性 ID=N 的优先级,再接下来 M 行表示测试用例 ID=1 到测试用例 ID=M 关联的特性的 ID 的列表。,TM),每个测试用例对应一个覆盖特性的集合,测试用例使用其 ID 作为下标进行标识,测试用例的优先级定义为其覆盖的特性的优先级之和。测试用例覆盖的 ID 不重复。原创 2024-05-07 08:44:46 · 11 阅读 · 0 评论 -
华为OD机试 C++【灰度图存储】
从第三个数开始,每两个数一组,每组第一个数是灰阶值,第二个数表示该灰阶值从左到右,从上到下(可理解为二维数组按行存储在一维矩阵中)的连续像素个数。黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰色阶段值,256阶灰图是一个灰阶值取值范围为 0~255 的灰阶矩阵,0表示全黑,255表示全白,范围内的其他值表示不同的灰度。通过遍历压缩数据,在解压缩时直接按照像素位置逐个填充灰度值到一维数组中,然后根据输入的像素位置计算出一维数组中对应的索引,并输出该位置上的灰度值,以此避免可能导致数组越界的情况。原创 2024-05-06 08:46:17 · 18 阅读 · 0 评论 -
华为OD机试 C++ 【手机App的防沉迷系统】
通过遍历注册的App信息,并根据查询时间点判断每个App是否在使用,如果在使用则比较其优先级,选择优先级最高的App名称打印出来。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。“手机App防沉迷系统”能够让我们每天合理地规划手机App使用时间,在正确的时间做正确的事。最后一行输入一个时间点,程序即返回该时间点使用的App。输出一个字符串,表示App名称,或NA表示空闲时间。请计算会议室占用时间段。原创 2024-04-30 08:35:23 · 9 阅读 · 0 评论 -
华为OD机试 C++【会议室占用的时间】
首先按照会议开始时间对会议进行排序,然后通过遍历排序后的会议时间段,合并重叠的会议时间段,最后输出合并后的会议时间段。之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。第一行输入一个整数 n,表示会议数量。会议1开始时间, 会议1结束时间。会议2开始时间, 会议2结束时间。请计算会议室占用时间段。原创 2024-04-29 08:34:36 · 12 阅读 · 0 评论 -
华为OD机试 C++ 【计算使用时间】
通过遍历注册的App信息,并根据查询时间点判断每个App是否在使用,如果在使用则比较其优先级,选择优先级最高的App名称打印出来。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。“手机App防沉迷系统”能够让我们每天合理地规划手机App使用时间,在正确的时间做正确的事。最后一行输入一个时间点,程序即返回该时间点使用的App。输出一个字符串,表示App名称,或NA表示空闲时间。请计算会议室占用时间段。原创 2024-04-28 08:35:00 · 8 阅读 · 0 评论 -
华为OD机试 C++【会议室占用时间】
首先按照会议开始时间对会议进行排序,然后通过遍历排序后的会议时间段,合并重叠的会议时间段,最后输出合并后的会议时间段。之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间。输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束。第一行输入一个整数 n,表示会议数量。会议1开始时间, 会议1结束时间。会议2开始时间, 会议2结束时间。请计算会议室占用时间段。原创 2024-04-26 09:24:41 · 12 阅读 · 0 评论 -
华为OD机试 C++ 【手机App防沉迷系统】
通过遍历注册的App信息,并根据查询时间点判断每个App是否在使用,如果在使用则比较其优先级,选择优先级最高的App名称打印出来。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。“手机App防沉迷系统”能够让我们每天合理地规划手机App使用时间,在正确的时间做正确的事。最后一行输入一个时间点,程序即返回该时间点使用的App。输出一个字符串,表示App名称,或NA表示空闲时间。请计算会议室占用时间段。原创 2024-04-25 08:33:13 · 29 阅读 · 0 评论 -
华为OD机试 C++【小朋友来自多少小区】
基于统计每个小区的人数,找到最大的小区人数。然后将所有小区的人数总和与最大的小区人数进行比较,取两者中较大的值作为结果,确保每个小朋友至少来自一个不同的小区。请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?每个小朋友去了解与自己同一个小区的小朋友还有几个。我们将这些数量汇总到数组 garden 中。原创 2024-04-24 08:34:48 · 17 阅读 · 0 评论 -
华为OD机试 C++【精准核酸检测】
通过遍历已确认需要检测的人员,并查找其接触的其他人员,将这些人员添加到需要检测的集合中,直到不再有新的人员被添加为止。,Xn),在所有人当中,找出哪些人需要进行核酸检测,输出需要进行核酸检测的人数。例如:A是确诊病例,A和B有接触、B和C有接触、C和D有接触、D和E有接触,那么B、C、D、E都是需要进行核酸检测的人。第三行开始,为一个 N * N 的矩阵,表示每个人员之间是否有接触,0表示没有接触,1表示有接触。需要进行核酸检测的人,是病毒传播链条上的所有人员,即有可能通过确诊病例所能传播到的所有人。原创 2024-04-23 08:34:12 · 15 阅读 · 0 评论 -
华为OD机试 C++【机场航班调度】
为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序,最终获得安排好的航班的起飞顺序。这个问题的解决思路是首先根据航空公司的缩写进行排序,然后再按照航班号的后4位数字进行排序。A市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。航班号为6为长度,后4位位纯数字,不考虑存在后4位重复的场景。原创 2024-04-19 08:38:26 · 25 阅读 · 0 评论 -
华为OD机试 C++【攀登者】
例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。用户输入一个表示地图高度的整型数组。然后遍历该数组,检查每个位置是否比其相邻的两个位置都高,如果是,则将其计数为一个山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。输出地图中山峰的数量。原创 2024-04-18 08:31:46 · 24 阅读 · 0 评论 -
华为OD机试 C++【生成哈夫曼树】
为了保证输出的二叉树中序遍历结果统一,增加限制:二叉树节点中,左节点权值小于右节点权值,根节点权值为左右节点权值之和。当左右节点权值相同时,左子树高度小于等于右子树高度。读取数字数组的长度和具体数值,然后利用输入的数组构建哈夫曼树,并对构建好的哈夫曼树进行中序遍历,最后将中序遍历的结果输出。给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。原创 2024-04-17 08:32:38 · 20 阅读 · 0 评论 -
华为OD机试 C++【密码解密】
遍历密文根据字符的不同情况(单字符映射或双字符映射)来解析对应的数字编码,并将其转换成相应的字母。通过将解密后的字母逐个添加到一个字符串中,最终得到明文字符串。映射的规则(‘a’ ~ ‘i’)分别用(‘1’ ~ ‘9’)表示;(‘j’ ~ ‘z’)分别用(“10*” ~ “26*”)表示。给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。“密文”字符串:913。约束:映射始终唯一。明文字符串:imkm。原创 2024-04-16 08:31:49 · 16 阅读 · 0 评论 -
华为OD机试 C++【来自异国的客人】
首先读取输入的三个整数,分别表示物品价值、幸运数字和进制。计算在给定进制下,物品价值中包含多少个幸运数字。在该方法中,不断地用给定进制除以物品价值,每次取余数判断是否等于幸运数字,如果是则计数加一。该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。问:当其购买一个在我国价值 k 的产品时,其中包含多少幸运数字?k 表示该客人购买的物品价值(以十进制计算的价格)有位客人来自异国,在该国使用 m 进制计数。第一行输入为 k,n,m。原创 2024-04-15 08:34:29 · 14 阅读 · 0 评论 -
华为OD机试 C++【执行任务赚积分】
遍历任务数组,按照截止时间逐个处理任务,如果当前时间小于任务的截止时间,则执行该任务并更新积分。如果当前时间大于等于任务的截止时间,则从已执行任务中选择积分最小的任务替换掉,以获取更高的积分。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。输出可获得的最多积分。原创 2024-04-15 08:32:55 · 19 阅读 · 0 评论 -
华为OD机试 C++【计算幸运数】
遍历每个指令,首先小明站在原点,其坐标值为0。在每一步移动后,更新当前坐标值,并将其与之前的最大坐标值进行比较,从而找到游戏过程中的最大坐标值。给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指令前进指定步数或者后退指定步数。第三行输入n个指令,每个指令的取值范围为:-100 ≤ 指令值 ≤ 100。幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数+1。指令为3,正好和幸运数相等,前进3+1=4步;指令为0,表示原地不动,既不前进,也不后退。幸运数为3,指令为[2,3,0,-5]原创 2024-04-11 08:34:05 · 17 阅读 · 0 评论 -
华为OD机试 C++【数的分解】
当输入为1时,无法分解,直接输出"N";对于奇数n,直接分解为n/2和n/2+1;对于偶数n,找到其最大奇因数x,然后判断连续正整数数列的长度是奇数还是偶数:如果长度是偶数,则最短长度为n/x*2,起始数为x/2-(长度/2-1);如果长度是奇数,则调用函数 findMinOddSequenceLength() 求出最短奇数长度,然后计算起始数。给定一个正整数 n,如果能够分解为 m(m > 1)个连续正整数之和,请输出所有分解中,m最小的分解。如果给定整数无法分解为连续正整数,则输出字符串"N"。原创 2024-04-10 08:33:14 · 27 阅读 · 0 评论 -
华为OD机试 C++【宝石数量】
题目橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i](0 ≤ i < n,n = gems.length)宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],…,gems[i+m-1](0 ≤ i < n,m ≤ n)假设你当前拥有总面值为 value 的钱,请问最多能购买到多少个宝石,如无法购买宝石,则返回0。输入描述第一行输入n,参数类型为int,原创 2024-04-09 08:35:32 · 18 阅读 · 0 评论 -
华为OD机试 C++【寻找宝藏】
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。2、在 dfs 函数中,使用栈来存储待探索的方格的坐标,初始将起点(0, 0)加入栈中。1、 dfs(m, n, k, grid),表示在地图大小为m × n,数位和不超过k的情况下,从起点(0, 0)开始搜索并统计黄金的数量。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。原创 2024-04-08 08:31:20 · 24 阅读 · 0 评论 -
华为OD机试 C++【最多购买宝石】
题目橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i](0 ≤ i < n,n = gems.length)宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],…,gems[i+m-1](0 ≤ i < n,m ≤ n)假设你当前拥有总面值为 value 的钱,请问最多能购买到多少个宝石,如无法购买宝石,则返回0。输入描述第一行输入n,参数类型为int,原创 2024-04-07 08:37:41 · 28 阅读 · 0 评论 -
华为OD机试 C++【悄悄话】
首先构建二叉树,然后深度优先搜索遍历每个节点,递归地将父节点的时延累加到其各个子节点上,并计算每个节点上的人接收到悄悄话的时间。最后返回叶子节点中的最大时延值,即为二叉树所有节点上的人都接收到悄悄话花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。给定一个二叉树,每个节点上站一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。二叉树所有节点上的人都接收到悄悄话花费的时间:38。原创 2024-04-02 08:36:52 · 33 阅读 · 0 评论 -
华为OD机试 C++【算力分配】
现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力,B[i] 是 B组 第 i 个CPU的运算能力。第一行输入为L1和L2,以空格分隔,L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量。对于每组测试数据,输出两个整数,以空格分隔,依次表示A组选出的CPU算力,B组选出的CPU算力。求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。第二行输入为A组服务器中各个CPU的算力值,以空格分隔。原创 2024-04-02 08:34:38 · 19 阅读 · 0 评论 -
华为OD机试 C++【执行任务赚积分】
遍历任务数组,按照截止时间逐个处理任务,如果当前时间小于任务的截止时间,则执行该任务并更新积分。如果当前时间大于等于任务的截止时间,则从已执行任务中选择积分最小的任务替换掉,以获取更高的积分。接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。输出可获得的最多积分。原创 2024-03-28 08:34:36 · 41 阅读 · 0 评论 -
华为OD机试 C++【计算三叉搜索树的高度】
在插入过程中,根据规则选择将数值插入到节点的左、中、右子树中。同时,我们在插入过程中记录树的高度,即从根节点到最深叶子节点的距离。整体思路是构建一个三叉搜索树,并在插入每个节点时更新树的高度,最后输出树的高度。每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。给你一系列数,请按以上规则,按顺序将数插入树中,构建出一棵三叉搜索树,最后输出树的高度。如果数小于节点的数减去500,则将数插入节点的左子树。如果数大于节点的数加上500,则将数插入节点的右子树。原创 2024-03-27 08:32:43 · 31 阅读 · 0 评论 -
华为OD机试 C++【API集群负载统计】
getKeywordFrequency() 会遍历HashMap中的URL地址,解析每个地址的层级信息,检查给定层级上关键字的出现情况,并累加其出现的频次。某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTful API是由多个层级构成,层级之间使用 / 连接,如 /A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。原创 2024-03-26 08:33:48 · 53 阅读 · 0 评论 -
华为OD机试 C++【剩余银饰的重量】
然后,通过循环模拟融化银饰的过程,每次移除最重的三块银饰并计算剩余银饰的重量。剩余银饰按照升序插入到已排序的数组中,并根据剩余银饰的数量输出相应的结果:如果剩余两块银饰,则输出较大的重量;有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。= y 且 y == z,会剩余重量为 y - x 的银块无法被熔掉;第二行为n块银饰的重量,重量的取值范围为[1,2000],重量之间使用空格隔开。如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可);原创 2024-03-25 08:32:25 · 20 阅读 · 0 评论 -
华为OD机试 C++【围棋的气】
我们可以遍历棋盘数组,对于每个空交叉点,检查它周围相邻的四个交叉点是否被黑棋或白棋占据,如果有一个被占据,则该空交叉点是一个气。我们计算黑棋和白棋的气数,并将其累加起来。2、所有同色棋子的气之和叫做该色棋子的气,需要注意的是,同色棋子重合的气点,对于该颜色棋子来说,只能计算一次气,比如下图中,黑棋一共4口气,而不是5口气,因为黑1和黑2中间红色三角标出来的气是两个黑棋共有的,对于黑棋整体来说只能算一个气。3、本题目只计算气,对于眼也按气计算,如果您不清楚“眼”的概念,可忽略,按照前面描述的规则计算即可。原创 2024-03-22 08:34:06 · 33 阅读 · 0 评论 -
华为OD机试 C++【掌握的单词个数】
我们可以使用一个长度为 26 的整数数组来存储每个小写字母的出现次数,同时记录通配符的数量。” 可以当作 “a” 等字母。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。:对于给定的单词数组 words,逐个检查每个单词是否可以由 chars 中的字符拼写而成。输出词汇表 words 中你掌握的所有单词的个数。注意:每次拼写时,chars 中的每个字母和万能字符都只能使用一次。words 的字符仅由 a-z 英文小写字母组成,例如 “abc”原创 2024-03-21 08:33:55 · 25 阅读 · 0 评论 -
华为OD机试 C++【找位置】
将已排好序的队列转换为整数数组,并对数组进行排序。二分查找在排序后的队列中找到小红的学号应该插入的位置。如果小红的学号恰好在队列中已有学号的位置,则返回该位置;否则,返回小红学号应该插入的位置(即该位置之前的学号都小于小红的学号,该位置之后的学号都大于小红的学号)。算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;小红来迟了,请你给小红出个主意,让她尽快找到她应该排的位置。小朋友出操,按学号从小到大排成一列;原创 2024-03-20 08:33:15 · 16 阅读 · 0 评论 -
华为OD机试 C++【分割均衡字符串】
遍历一次字符串,使用两个变量 xCount 和 yCount 来分别记录当前已经遇到的字符 ‘X’ 和 ‘Y’ 的个数。当 xCount 和 yCount 相等时,表示找到了一个均衡子串,我们可以增加一个计数器 count,同时重置 xCount 和 yCount 为 0。最后输出 count,即为可分割成新的均衡子串的最大个数。均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。输出可分割成新的均衡子串的最大个数。原创 2024-03-19 08:31:11 · 24 阅读 · 0 评论 -
华为OD机试 C++【地图寻宝】
在横坐标和纵坐标的数位之和不大于 k 的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于 k 的方格存在危险不可进入。2、在 dfs 函数中,使用栈来存储待探索的方格的坐标,初始将起点(0, 0)加入栈中。1、 dfs(m, n, k, grid),表示在地图大小为m × n,数位和不超过k的情况下,从起点(0, 0)开始搜索并统计黄金的数量。小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n-1] 和 [0, m-1]。原创 2024-03-18 08:35:36 · 29 阅读 · 0 评论