自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 华为OD机试真题(C卷,100分)- 数组组成的最小数字(Java & JS & Python & C)

对于三个数及以上的数组,我们需要从中取出3个数,这个3个数,首先需要保证总长度最短,即保证组合数的位数最少,其值才能最小,因此我们需要将数组升序,这样小数在前,大数在后,我们只要取前三位即可,比如21,30,62,5,31升序为 5,21,30,31,62,取前3个,5,21,30然后进行sort默认排序,变为21,30,5,而21305就是最小值。由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字。JavaScript算法源码。Python算法源码。

2024-04-04 15:26:33 252

原创 华为OD机试真题(C卷,100分)- 数组连续和(Java & JS & Python & C)

本题中说区间可以是单个元素,因此preSum需要初始化为 arr.length + 1 长度,其中preSum[0] = 0,因为这样的话,才能基于preSum描述出第一个元素单独作为区间时的区间和,即preSum[1] - preSum[0]。因此,我们只需要计算出第二行输入数组的前缀和,即可快速计算出任意区间范围的和,比如求解arr数组的[L,R]范围的元素之和,只需要计算 preSum[R] - preSum[L-1]即可。由于R必须大于L,因此当R越界时,即R>arr.length时,结束。

2024-04-04 15:25:20 910

原创 华为OD机试真题(C卷,100分)- 数字字符串组合倒序(Java & JS & Python)

即非数字、字母、‘-’ 的字符都是作为单词分隔符,因此我们可以按此逻辑对输入的字符串进行分割,得到一个单词数组words。这里之前把“及以上”看漏了,因此上面对于word的处理中,第2步不能按照"–“分割,而是应该按照正则”-{2,}"分割。除了 1,2 里面定义的字符以外其他的所有字符,都是非法字符,作为字符串的间隔符处理,倒序后间隔符作为空格处理;对数字,字符,数字串,字符串,以及数字与字符串组合进行倒序排列。连续出现 2 个 “-” 及以上时视为字符串间隔符。Python算法源码。

2024-04-04 15:24:41 304

原创 华为OD机试真题(C卷,100分)- 数字涂色(Java & JS & Python & C)

本题难点主要在于,如何标记一个元素已经涂色了,我这里直接定义了一个长度和输入数列arr相同的数组color,color所有元素默认未初始化,一旦arr[j]可以整除arr[i],则color[j] = true。因此我们可以直接将输入数列进行升序排序,则数列从左到右,元素依次增大,我们每次取最左边的数arr[i],然后遍历它后面的所有数arr[j]去除它,若可以整除,则为一种颜色,若不可以整除,则为不同颜色。简单的逻辑题,题目要求:“同种颜色的所有数都可以被这种颜色中最小的那个数整除”。

2024-04-04 15:23:59 264

原创 华为OD机试真题(C卷,100分)- 数据单元的变化替换(Java & JS & Python & C)

因为单元格内含有"引用1",我们需要根据"引用1",去找引用的单元格1内容,而被引用的单元格1中也可能存在"引用2",我们需要根据"引用2",去找引用的单元格2内容,…,因此需要不停地根据"引用"找下去,直到某个引用的单元格内容中不存在"引用",然后开始回溯。comma separated values(CSV) 逗号分隔值,csv 格式的数据文件使用逗号 “,” 作为分隔符将各单元的内容进行分隔。将一个 csv 格式的数据文件中包含有单元格引用的内容替换为对应单元格内容的实际值。Python算法源码。

2024-04-04 15:23:21 401

原创 华为OD机试真题(C卷,100分)- 输出指定字母在字符串的中的索引(Java & JS & Python)

给定一个字符串,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。用例中的排序规则其实就是字典序排序。简单的排序,以及字符串操作考察。相同字母输出第一个出现的位置。JavaScript算法源码。Python算法源码。

2024-04-04 15:22:48 168

原创 华为OD机试真题(C卷,100分)- 手机App防沉迷系统(Java & JS & Python & C)

2.1. App_registering 的优先级高于(>)App_registered,则App_registered需要被注销,此时不能直接进行注销动作,因为我们需要确保 App_registering 可以注册后,才能进行注销。请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点使用的App名称,如果该时间点没有注册任何App,请返回字符串“NA”。App1和App2的时段有冲突,App2优先级高,注册App2之后,App1自动注销,因此输出App2。本题数量级较小,可以考虑暴力破解。

2024-04-04 15:22:14 562

原创 华为OD机试真题(C卷,100分)- 石头剪刀布游戏(Java & JS & Python & C)

对于Java,JS,Python这类自带字典结构的编程语言,我们可以用字典来统计出某个手势(key)的所有人名(ele)。输出为赢家的玩家ID列表(一个或多个),每个ID一行,按字符串升序排列。例如1:三个玩家出拳分别是A,B,C。字典没有’A’的key => 只有手势B,C,那么赢家就是手势B的玩家。字典没有’B’的key => 只有手势A,C,那么赢家就是手势C的玩家。字典没有’C’的key => 只有手势A,B,那么赢家就是手势A的玩家。例如2:三个玩家出拳分别是A,B,B。

2024-04-04 15:21:36 226

原创 华为OD机试真题(C卷,100分)- 剩余银饰的重量(Java & JS & Python & C)

我们只对初始所有银饰进行一次升序,之后取出尾部三个最重的银饰,如果有未熔完的银块remain,那么就在剩余银饰(有序的)进行二分查找remain的有序插入位置,进行插入,这样可以提高效率。选出 3 7 10,需要计算 (7-3) 和 (10-7) 的差值,即(7-3)-(10-7)=1,所以数组转换为 [1],剩余一块,返回该块重量,返回1。如果每次还有未熔完的银块,则重新加入到银饰中,然后再取出最重的三个银饰按照上面逻辑处理,直到所有银饰的数量不足三个,结束上面逻辑。Python算法源码。

2024-04-01 18:18:21 425

原创 华为OD机试真题(C卷,100分)- 生成哈夫曼树(Java & JS & Python & C)

Java和Python有内置的优先队列实现,而JS和C没有,因此JS和C可以尝试更简单的每次对权值序列进行降序排序,尾部两个就是最小的,放回合并和后再重新降序排序。所谓树的带权路径长度,就是树中所有的叶节点的权值乘上其到根节点的路径长度(若根节点为 0 层,叶节点到根节点的路径长度为叶节点的层数)其实,我们通过上图就可以发现规律,蓝色节点是初始N个叶子节点,绿色节点是新建的,而绿色节点的个数 = N - 1。给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。

2024-04-01 18:17:49 813

原创 华为OD机试真题(C卷,100分)- 全排列(Java & JS & Python)

首先我们可以求解出有重复的全排列个数,假设共有n个元素,则有重复的全排列个数为n!比如ABA有三个元素,则有重复的全排列个数为3!然后,我们需要找出重复的元素的个数,比如ABA中的A重复了2次,因此会生成2!给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。如:S为ABA,则不同的排列有ABA、AAB、BAA三种。输入一个长度不超过10的字符串S,我们确保都是大写的。因此不重复的全排列个数有 3!即求解无重复的全排列个数。JavaScript算法源码。Python算法源码。

2024-04-01 18:17:16 237

原创 华为OD机试真题(C卷,100分)- 求最多可以派出多少支团队(Java & JS & Python & C)

用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或者2人组成,且1个人只能参加1个团队,计算出最多可以派出多少只符合要求的团队。然后剩余的人,按照能力值升序排序,定义L,R指针,初始时L=0,R=k-1,k是剩余人总数。说明 3、5组成一队 1、7一队 9自己一队 输出3。3、5组成一队,1、7一队,9自己一队,2、6一队,输出4。在上面过程中,计算出组队个数作为题解。最多可以派出的团队数量。Python算法源码。

2024-04-01 18:16:36 277

原创 华为OD机试真题(C卷,100分)- 求字符串中所有整数的最小和(Java & JS & Python & C)

需要注意的是,当c == ‘-’,也需要注意出现 “-34-40” 这种情况,即 c == ‘-’,也需要先判断isNegative == true,则需要将negative容器中内容拼接,然后转化为负数合入结果,ans -= parseInt(negative.join(“”)),完成后,将isNeagtive = false,并且清空negative容器。2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023。输入字符串s,输出s中包含所有整数的最小和。

2024-04-01 18:16:06 392

原创 华为OD机试真题(C卷,100分)- 求幸存数之和(Java & JS & Python & C)

运算过程为:从索引0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1 的数字,该数被敲出,并从该点起跳,以此类推,直到幸存 left 个数为止,然后返回幸存数之和。通过上面图示我们可以发现,被删除节点其实是作为起跳点,因此基于普通数组来操作的话,既要实现节点删除,又要实现基于删除点进行下次的起跳,这个逻辑是比较复杂的。从1(索引为0)开始起跳,中间跳过 4 个数字,因此依次删除 6,2,8,5,4,7。我的想法是构建一个循环链表来代替数组,关于循环链表的实现细节,请看代码实现以及注释。

2024-04-01 18:15:30 257

原创 华为OD机试真题(C卷,100分)- 求满足条件的最长子串的长度(Java & JS & Python & C)

从上面例子可以看出,当left指针指向数字,但是滑动窗口内已经有两个字母时,left应该移动到第一个字母的后面一个位置target。target位置只有两种数据:字母或数字,如果是字母则target位置就是滑动窗口内第二字母的位置,如果是数字,则避免了长度损失。因此,我们需要判断left指针当前指向的元素是否为字母,如果为字母,则left++才能起到减少一个字母的作用,否则不能。我们可以看看上面第三个圈的情况,当left指针指向的是数字,如果left++,则滑动窗口内的字母并不会减少。

2024-04-01 18:14:52 405

原创 华为OD机试真题(C卷,100分)- 求解连续数列(Java & JS & Python & C)

由于要求连续正整数数列的和,因此,S / N 的结果必然是数列的中间值,比如 525 / 6 = 87.5,由于6是偶数个,因此87.5其实就是 87 和 88 的中间值。得到中间值后,我们就可以根据连续正整数数列半径求出连续数列两个边界值,如果左边界~右边界的元素之和为S,否则求得边界就是符合要求的。再比如 9 / 3 = 3,而9是 2 3 4 数列的和,而3是奇数个,因此3就是2 3 4 数列的中间值。输入包含两个参数,1)连续正整数数列和S,2)数列里数的个数N。Python算法源码。

2024-03-31 22:11:36 374

原创 华为OD机试真题(C卷,100分)- 求符合要求的结对方式(Java & JS & Python & C)

我们可以先将数组A升序,然后外层循环 i 范围0 ~ A.len-1,内层循环 j 范围 A.len-1 ~ i+1,如果遇到A[i]+A[j] === N,则计数++,如果遇到A[i]+A[j] < N,则说明内层后续遍历出来的元素都无法满足要求,则内层循环终止,继续下一次外层。满足要求的结对方式为:A[0]和A[4],A[1]和A[2],A[1]和A[3],A[2]和A[3]。第二行为数组A的元素,每个元素的取值范围[1,1000]JavaScript算法源码。Python算法源码。

2024-03-31 22:10:59 139

原创 华为OD机试真题(C卷,100分)- 悄悄话(Java & JS & Python & C)

而悄悄话的传递,其实父节点将自身得到消息的时延累加到其各个子节点上,最终叶子节点中最大的时延值就是:二叉树所有节点上的人都接收到悄悄话花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。给定一个二叉树,每个节点上站一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。如果父节点在序列中的索引是k,则其两个子节点在序列中的索引分别为 2k+1, 2k+2。返回所有节点都接收到悄悄话花费的时间。Python算法源码。

2024-03-31 22:10:15 272

原创 华为OD机试真题(C卷,100分)- 拼接URL(Java & JS & Python)

JS和Python的split函数就要规矩的多,上面三种输入情况,都会返回一个长度为2的字符串数组。url前缀(一个长度小于100的字符串),url后缀(一个长度小于100的字符串)prefix前缀,需要将其结尾的多个/去除,使用正则 /+$ 来匹配结尾的多个/suffix后缀,需要将其开头的多个/去除,使用正则 ^/+ 来匹配开头的多个/对于python而言,有更简单的lstrip和rstrip方法,实现同样效果。给定一个url前缀和url后缀,通过,分割 需要将其连接为一个完整的url。

2024-03-31 22:09:43 214

原创 华为OD机试真题(C卷,100分)- 判断字符串子序列(Java & JS & Python)

反向遍历source字符串的每一个字符,与当前cursor指针指向的taget串的字符比较,若相同,则cursor–,若不同,则cursor不变。创建一个指针cursor,来指向target的尾部target.length-1位置,而不是指向target的0位置。首字母的下标,因此我们反向遍历target串,以及source串,这样的话,匹配到的第一个序列就是符合要求的。整个字符串,而不是某个子串。(例如,”abc”是”aebycd”的一个子序列,而”ayb”不是)。Python算法源码。

2024-03-31 22:09:10 394

原创 华为OD机试真题(C卷,100分)- 攀登者1(Java & JS & Python & 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。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。本题代码实现仍然以ACM模式处理,但是会将输入处理 与 算法逻辑 分开,大家只看算法逻辑即可。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。输入为一个整型数组,数组长度大于1。Python算法源码。

2024-03-31 22:08:40 352

原创 华为OD机试真题(C卷,100分)- 内存冷热标记(Java & JS & Python & C)

第二行为访存序列,空格分隔的 N 个内存页框号,页面号范围 0 ~ 65535,同一个页框号可能重复出现,出现的次数即为对应框号的频次。一种典型的方案是基于内存页的访问频次进行标记,如果统计窗口内访问次数大于等于设定阈值,则认为是热内存页,否则是冷内存页。内存页1和内存页2的访问频次相等,页框号小的排前面。如果第一行 > 0,则接下来按照访问频次降序输出内存页框号,一行一个,频次一样的页框号,页框号小的排前面。第一行输出标记为热内存的内存页个数,如果没有被标记的热内存页,则输出 0。

2024-03-31 22:07:55 187

原创 华为OD机试真题(C卷,100分)- 免单统计(Java & JS & Python)

样例 2 中,前两个订单是同一秒内同一时刻(也是最早)下单,都可免单,第三个订单是当前秒内唯一一个订单(也是最早),也可免单。样例 3 中,前两个订单是同一秒内同一时刻(也是最早)下单,第三第四个订单不是当前秒内最早下单,不可免单,第五个订单可以免单。华为商城举办了一个促销活动,如果某顾客是某一秒内最早时刻下单的顾客(可能是多个人),则可以获取免单。样例 1 中,三个订单都是同一秒内下单,只有第一个订单最早下单,可以免单。考察数组排序以及字符串操作。JavaScript算法源码。Python算法源码。

2024-03-31 09:10:32 357

原创 华为OD机试真题(C卷,100分)- 密钥格式化(Java & JS & Python)

给定一个非空字符串 S,其被 N 个’-‘分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的串每 K 个用’-‘分隔,并将小写字母转换为大写。字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。字符串 S 被分成了两个部分,每部分 4 个字符;注意,两个额外的破折号需要删掉。JavaScript算法源码。Python算法源码。

2024-03-31 09:09:56 182

原创 华为OD机试真题(C卷,100分)- 密码输入检测(Java & JS & Python & C)

给定用户密码输入流 input,输入流中字符 ‘=8 && 小写字母数量 >= 1 && 大写字母数量 >= 1 && 数字数量 >= 1 && 非字母数字空白字符数量 >= 1。输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。注意空串退格后仍然为空串,且用户输入的字符串不包含 ‘

2024-03-31 09:09:17 151

原创 华为OD机试真题(C卷,100分)- 密码解密(Java & JS & Python & C)

映射的规则(‘a’ ~ ‘i’)分别用(‘1’ ~ ‘9’)表示;(‘j’ ~ ‘z’)分别用(“10*” ~ “26*”)表示。给定一段“密文”字符串 s,其中字符都是经过“密码本”映射的,现需要将“密文”解密并输出。如果优先进行 “1” ~ “9” 密文的映射替换,则会产生错误答案。本题有多种解题思路,我的思路是利用字符串替换操作。即将如下密文和明文进行按照顺序依次映射替换。翻译后的文本长度在100以内。更多实现细节,请看代码。约束:映射始终唯一。Python算法源码。

2024-03-31 09:08:42 248

原创 华为OD机试真题(C卷,100分)- 螺旋数字矩阵(Java & JS & Python & C)

本题只给出了矩阵的行数m,没有给列数,需要我们求解一个最少的列数来满足矩阵能够填入n个数字,因此列数 k = ceil(n / m),这里的除法不是整除,并且要对除法的结果向上取整。但是,此时不符合用例1要求,因为step只需要填到n即可,而用例1的n=9,因此填值过程中,我们需要增加一个判断,即step > n时彻底停止添值,即到下面状态时停止。此时应该基于前一个状态进行X++,Y++,到达上图黄色位置后,此时又回到螺旋顺序的第一步,从第X行开始正序填入。如下图所示:此时 X=n-1,Y = -1。

2024-03-30 20:18:37 1044

原创 华为OD机试真题(C卷,100分)- 两数之和绝对值最小(Java & JS & Python)

给定一个从小到大的有序整数序列(存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个绝对值。一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 -65535~65535。每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。只是本题整数序列是升序的。本题解析就是上面链接算法题的解析。两数之和绝对值最小值。Python算法源码。

2024-03-30 20:18:04 244

原创 华为OD机试真题((C卷,100分)- 连续字母长度(Java & JS & Python)

给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。而用例1输出的第k=3大重复度的子串的长度是2,那就肯定是指BB子串。而不是“名义”第k大?三个子串长度均为1,所以此时k = 1,k=2,k=3这三种情况均输出1。而用例1输出的第k=2大重复度的子串的长度是1,这里又是取名义上第k大了?比如用例1: A:4,H:4,B:2,C:1,D:1。接下来是,实际上的第3大,名义上的第2大子串:BB。接下来是,实际上的第3大,名义上的第2大子串:B。

2024-03-30 20:17:33 297

原创 华为OD机试真题(C卷,100分)- 来自异国的客人(Java & JS & Python & C)

该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。根据考友反馈,下面解法:“按照 m进制的 “位值” 来对比幸运数 n”,可以拿100%通过率。比如异国的进制 m = 16,而异国客人的幸运数 n = 5,按照 m进制的 “位值” 来对比幸运数 n。按照 m进制的 “位值” 来对比幸运数 n。按照 m进制的 “位值” 来对比幸运数 n。按照 m进制的 “位值” 来对比幸运数 n。第一行输入为 k,n,m。Python算法源码。

2024-03-30 20:16:53 274

原创 华为OD机试真题(C卷,100分)- 括号匹配(Java & JS & Python)

给定一个字符串,里边可能包含“()”、“[]”、“{}”三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。若括号成对出现且嵌套关系正确,或该字符串中无括号字符,输出:true;若未正确使用括号字符,输出:false。JavaScript算法源码。实现时,无需考虑非法输入。的变种题,解题思路相同。Python算法源码。

2024-03-30 20:16:20 302

原创 华为OD机试真题(C卷,100分)- 快递运输(Java & JS & Python & C)

一辆运送快递的货车,运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。因此,可以将输入的快递重量数组进行升序,依次累加,看总重量是否超过限制即可,超过限制,则对应快递不能加入,最多只能运送前面所有快递。其实,这里很容易理解,假设0~i的快递总重量都在限载内,那么下一个快递我们最优是选择什么呢?这里要求货车能装最多快递件数,其实相当于每件物品的价值为1,求解01背包问题的最大价值。货车的载重量为20,最多只能放三个快递5、10、2,因此输出3。

2024-03-30 08:52:51 318

原创 华为OD机试真题(C卷,100分)- 靠谱的车(Java & JS & Python & C)

看到题目提示输入数字N的取值范围1

2024-03-30 08:52:13 379

原创 华为OD机试真题(C卷,100分)- 考勤信息(Java & JS & Python & C)

根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,滑窗长度 - present次数 = 任意连续7次考勤中的缺勤/迟到/早退次数。根据考友反馈,连续的迟到/早退,应该指:本次是迟到或早退,上次也是迟到或早退。本题主要难点在于如果统计”任意连续7次考勤“中的缺勤/迟到/早退次数。比如,本次是迟到,上次是早退,则也算是:连续的迟到/早退。这里我们可以使用滑动窗口,且滑窗窗口的长度最大为7。JavaScript算法源码。没有连续的迟到/早退;Python算法源码。

2024-03-30 08:51:42 266

原创 华为OD机试真题(C卷,100分)- 开源项目热度榜单(Java & JS & Python & C)

按照热度降序,输出开源项目的名字,对于热度值相等的,按照项目名字转换为全小写后的字典序排序(‘a’ > ‘b’ > ‘c’ > …> ‘x’ > ‘y’ > ‘z’)。榜单按照热度值降序排序,对于热度值相等的,按照项目名字转换为全小写字母后的字典序排序(‘a’,‘b’,‘c’,…,‘x’,‘y’,‘z’)。

2024-03-30 08:51:09 524

原创 华为OD机试真题(C卷,100分)- 精准核酸检测(Java & JS & Python & C)

并查集底层的fa数组,fa数组索引代表每个节点,fa数组元素代表对应索引的节点的根节点,而同一个连通分量中的节点的根都是相同的,因此,我们需要对fa每一个数组索引找一下根,这里可以使用并查集的find操作(递归实现),最后统计同一个根下的节点数量,即为同一个接触群体的人数。例如:A是确诊病例,A和B有接触、B和C有接触、C和D有接触、D和E有接触,那么B\C\D\E都是需要进行核酸检测的人。第三行开始,为一个 N * N 的矩阵,表示每个人员之间是否有接触,0表示没有接触,1表示有接触。

2024-03-30 08:50:29 762

原创 华为OD机试真题(C卷,100分)- 解密犯罪时间(Java & JS & Python)

最近时间,这里是“下一个”,而不是“上一个”,因此要求的时间在当前时间之后。另外如果输入的时间对应的时间字符串刚好是排序后全排列最后一个,则此时我们需要取第二天的第一个时间,即排序后全排列第一个。即由0,1,2构成的四层排列,题目说“每个出现数字都可以被无限次使用”,因此每层多可以使用相同的数字。解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。例如,“01:35”和“11:08”是合法的,“1:35”和“11:8”是不合法的。2.最近的时刻可能在第二天。

2024-03-29 18:45:39 262

原创 华为OD机试真题(C卷,100分)- 检查是否存在满足条件的数字组合(Java & JS & Python & C)

我们可以先将数组降序,则第一层for选择的数必然是最大的,可以作为A,第二层和第三层是较小数,可以作为B和C,或者C和B。如果存在满足要求的数,在同一行里依次输出规则里A/B/C的取值,用空格隔开。本题数组长度不大,只有3~100,因此三重for暴力破解,也不会超时。给定一个正整数数组,检查数组中是否存在满足规则的数字组合。因此,我们一旦找到符合要求的解,就可以直接return。用例保证每组数字里最多只有一组符合要求的解。接下来一行输出所有数组元素,用空格隔开。如果不存在,输出0。Python算法源码。

2024-03-29 18:45:04 250

原创 华为OD机试真题(C卷,100分)- 计算三叉搜索树的高度(Java & JS & Python & C)

若 cur 节点不存在中子树,那么 node 就作为 cur 节点的中子树根节点,且且node.height = cur.height + 1。若 cur 节点不存在左子树,那么 node 就作为 cur 节点的左子树根节点,且node.height = cur.height + 1。若 cur 节点不存在右子树,那么 node 就作为 cur 节点的右子树根节点,且node.height = cur.height + 1。3. 其他情况,则 node 应该插入到 cur 节点的中子树中,

2024-03-29 18:44:27 755

原创 华为OD机试真题(C卷,100分)- 绘图机器(Java & JS & Python & C)

我的解题思路是这样的,将上面红色线框对应的复杂图形的面积求解,切割为横轴上每个单位长度的矩形面积求解,而每单位长度的矩形面积就等于对应的高度,即纵轴坐标的绝对值,因此我们只需要将offsetY偏移转为纵坐标的即可。这里只强调递增没有强调连续,因此我们需要考虑不连续的offsetY转纵坐标的场景,其实也很简单,断档的offsetY其实默认为0。请计算绘制的直线和横坐标轴以及x=E的直线组成的图形面积。而题目描述中:用例保证横坐标x以递增排序的方式出现。Python算法源码。

2024-03-29 17:00:00 340

机器学习硬币面额识别

本项目是用matlab实现的基于机器视觉的硬币面额识别系统

2019-04-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除