普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
华为OD最新面试手撕代码:行星碰撞
3、找出碰撞后身下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相 同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。2、对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向左移动,负表 示向右移动)。每一颗行星以相同的速度移动。进行碰撞后,全部行星都爆炸了。面试官对原题做了修改,请注意对比不同。表示在同一行的行星。1、给定一个整数数组。原创 2024-06-03 10:06:37 · 337 阅读 · 0 评论 -
【华为OD机试算法】剩余银饰的重量
选出 3 7 10,需要计算 (7-3) 和 (10-7) 的差值,即(7-3)-(10-7)=1,所以数组转换为 [1],剩余一块,返回该块重量,返回1。有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。如果 x == y 且 y!= y 且 y == z,会剩余重量为 y - x 的银块无法被熔掉;根据题目描述的规则,计算每次熔掉后剩余的银块重量,并将剩余的银块重新放入数组中。第二行为n块银饰的重量,重量的取值范围为[1,2000],重量之间使用空格隔开。原创 2024-05-29 10:08:31 · 185 阅读 · 0 评论 -
华为OD机试算法:出错的或电路
某生产门电路的厂商发现某一批次的或门电路不稳定,具体现象为计算两个二进制数的或操作时,第一个二进制数中某两个比特位会出现交换,交换的比特位置是随机的,但只交换这两个位,其他位不变。为了评估影响和定位出错的根因,工程师需要研究在各种交换的可能下,最终的或结果发生改变的情况有多少种。第二行有一个长为N的二进制数,表示与电路的第一个输入数,即会发生比特交换的输入数。对于每个可以交换的比特位,我们将其与第二个输入数进行或操作,判断结果是否改变。如果结果改变,说明这种交换会影响最终的或结果,将计数器加一。原创 2024-05-29 10:03:20 · 54 阅读 · 0 评论 -
华为OD机试算法:猜密码
可能的密码组合,每种组合显示成一行,每个组合内部的数字以半角逗号分隔,从小到大的顺序排列。输出的密码数字要按照从小到大的顺序排列,密码组合需要按照字母顺序,从小到大的顺序排序。请你根据他记住的数字范围和密码的最小数字数量,帮他算下有哪些可能的组合,对于每个生成的组合,按照从小到大的顺序排序,并将组合转换为字符串格式。可能的密码组合,一个的有两种: 0 2 两个的有一个: 0,2。输出的每一个组合的数字的数量要大于等于密码最小数字数量;输出的组合都是从可选的数字范围中选取的,且不能重复;原创 2024-05-29 10:01:08 · 72 阅读 · 0 评论 -
华为OD机试算法:比较两个版本号的大小
如果所有位置上的子版本号都相等,则返回0。输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。在比较子版本号时,需要先处理子版本号前面的0,然后根据题目给定的比较规则进行比较。子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。首先,将输入的两个版本号字符串按照"."进行分割,得到两个子版本号列表。子版本号前面的0不参与比较,比如 001 和 1 是相等的。然后,遍历两个子版本号列表,逐个比较每个子版本号的大小。第一行输入version1。原创 2024-05-29 09:52:28 · 76 阅读 · 0 评论 -
【华为OD机试算法】最多购买宝石数目
gems = [1, 1, 1, 1, 1, 1, 1, 1, 1], value = 10 最多购买的宝石为gems[0]至gems[8],即全部购买。gems = [8,4,6,3,1,6,7], value = 10最多购买的宝石为gems[2]至gems[4]或者gems[3]至gems[5]gems = [6, 1, 3, 1, 8, 9, 3, 2, 4], value = 15 最多购买的宝石为gems[0]至gems[3]输出int类型的返回值,表示最大可购买的宝石数量。原创 2024-05-29 09:24:30 · 139 阅读 · 0 评论 -
华为OD机试算法:最大时间
给定一个数组,里面有 6 个整数,求这个数组能够表示的最大 24 进制的时间是多少,输出这个时间,无法表示输出 invalid。如果找到一个满足条件的时间组合,将其转换为 24 进制格式并输出。然后,遍历所有可能的时间组合,对于每个时间组合,判断是否满足 24 进制时间的要求。输入整数数组长度为 6,不需要考虑其它长度,元素值为 0 或者正整数,6 个数字每个数字只能使用一次。输出为一个 24 进制格式的时间,或者字符串”invalid“。首先,将输入的整数数组按照从小到大的顺序排序。原创 2024-05-29 09:21:05 · 242 阅读 · 0 评论 -
华为OD机试算法:最大括号深度
如果字符串有效,使用一个栈来记录括号的嵌套深度。遍历字符串,遇到左括号时,将其压入栈中;遇到右括号时,弹出栈顶元素,更新最大嵌套深度。首先,遍历字符串,检查是否存在无效的情况。现有一字符串仅由 ‘(‘,’)’,'{‘,’}’,'[‘,’]’六种括号组成。一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’的字符串。输出括号的最大嵌套深度,若字符串无效则输出0。无效字符串,有两种类型的左右括号数量不相等。无效字符串,存在未按正确顺序闭合的括号。无效字符串,存在未按正确顺序闭合的括号。原创 2024-05-26 14:33:37 · 255 阅读 · 0 评论 -
华为OD机试算法:最大N个数与最小N个数的和
给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。最大2个数[100,95],最小2个数[83,64], 输出为342。最大2个数[4,3],最小2个数[3,2], 有重叠输出为-1。判断最大N个数与最小N个数是否有重叠,如果有重叠则返回-1。第三行输入N,N表达需要计算的最大、最小N个数。最大N个数与最小N个数不能有重叠,如有。首先,读取输入的数组大小M和数组内容。计算最大N个数与最小N个数的和。输出最大N个数与最小N个数的和。输出最大N个数与最小N个数的和。然后,对数组进行去重操作。原创 2024-05-26 14:18:34 · 141 阅读 · 0 评论 -
华为OD机试算法:转盘寿司
如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。然后,遍历prices列表,对于每个元素i,找到满足条件的最近的下一盘寿司j(即prices[j] < prices[i]),并将j的价格加到i上,得到实际得到的寿司的总价格。首先,根据输入的寿司价格列表,创建一个列表prices,用于存储每盘寿司的价格。寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,原创 2024-05-26 13:50:36 · 136 阅读 · 0 评论 -
华为OD机试算法: 执行时长
遍历任务数组,对于每个任务,执行以下操作: a. 如果当前秒的任务数量小于等于n,那么将当前秒的任务数量累加到completed_tasks上,并将completed_tasks除以n向下取整得到已执行的秒数。如果当前秒的任务数量大于n,那么将当前秒的任务数量减去n,然后将剩余任务数量累加到已完成任务总数上,并将已完成任务总数除以n向下取整得到已执行的秒数。如果当前秒的任务数量小于等于n,那么直接将当前秒的任务数量累加到已完成任务总数上,并将已完成任务总数除以n向下取整得到已执行的秒数。原创 2024-05-26 13:36:23 · 152 阅读 · 0 评论 -
【华为OD机试算法】整型数组按个位值排序
给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。使用稳定的排序算法(例如冒泡排序、插入排序等)对数组进行排序,排序规则为按照元素的十进制最低位从小到大排序。定义一个函数sort_by_least_significant_digit,接收一个参数:数组nums。在函数内部,使用冒泡排序算法对数组nums进行排序,排序规则为按照元素的十进制最低位从小到大排序。返回排序后的数组nums作为结果。将输入的数组存储在相应的变量中。原创 2024-05-26 13:25:29 · 128 阅读 · 0 评论 -
华为OD机试算法:数组二叉树
然后,从根节点开始,根据数组下标关系,找到最小叶子节点的路径。具体方法是,从根节点开始,每次将当前节点的下标乘以2和2*N+1,分别表示左子节点和右子节点的下标。二叉树也可以用数组来存储,给定一个数组,树的根节点的值存储在下标1,对于存储在下标N的节点,它的左子节点和右子节点分别存储在下标2*N和2*N+1,并且我们用值-1代表一个节点为空。输出从根节点到最小叶子节点的路径上,各个节点的值,由空格分隔,用例保证最小叶子节点只有一个。最后,输出从根节点到最小叶子节点的路径上的各个节点的值。原创 2024-05-23 14:10:32 · 51 阅读 · 0 评论 -
华为OD手撕代码:最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字。"aba" 同样是符合题意的答案。原创 2024-05-23 09:29:08 · 110 阅读 · 0 评论 -
华为OD机试算法:运输时间
题目描述M(1 ≤ M ≤ 20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1 ≤ N ≤ 400)。速度快的车追上前车后,只能以前车的速度继续行驶,求最后一辆车到达目的地花费的时间。注:每辆车固定间隔 1 小时出发,比如第一辆车 0 时出发,第二辆车 1 时出发,依次类推。原创 2024-05-22 09:56:53 · 304 阅读 · 0 评论 -
华为OD机试算法:字符串比较
该连续子串|A[i] – B[i]|之和小于等于V。然后,我们需要找到满足条件的连续子串,即该子串的|A[i] - B[i]|之和小于等于V。字符串最大连续子串的长度,要求该子串|A[i] – B[i]|之和小于等于V。首先,我们需要遍历字符串A和B,计算每个位置上字符的ASCII码之差的绝对值。第一行为字符串A,仅包含小写字符,1 <= A.length <=1000。第二行为字符串B,仅包含小写字符,1 <= B.length <=1000。字符串A为xxcdefg,字符串B为cdefghi,V=5。原创 2024-05-20 11:20:09 · 143 阅读 · 0 评论 -
华为OD机试算法:数字字符串组合倒序
连续出现 2 个 “-” 及以上时视为字符串间隔符,如“out--standing”中的”–“视为间隔符,是 2 个独立整体字符串”out”和”standing”;除了 1,2 里面定义的字符以外其他的所有字符,都是非法字符,作为字符串的间隔符处理,倒序后间隔符作为空格处理;如果包含非法字符,则将其视为间隔符处理,倒序后间隔符作为空格处理。对数字,字符,数字串,字符串,以及数字与字符串组合进行倒序排列。首先,将输入的字符串按照空格进行分割,得到一个单词列表。字符范围:由 a 到 z, A 到 Z,原创 2024-05-17 10:27:42 · 115 阅读 · 0 评论 -
华为OD机试算法:数组连续和
第一行的3表示第二行数组输入3个数,第一行的7是比较数,用于判断连续数组是否大于该数;给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。遍历排序后的数组,对于每个元素,检查它与后面的元素的和是否大于等于x。注意:此题对效率有要求,暴力解法通过率不高,请考虑高效的实现方式。初始化一个空的结果列表,用于存储满足条件的连续区间。首先,将输入的数组按照从小到大的顺序进行排序。继续向后遍历,直到找到下一个不满足条件的元素。输出结果列表的长度,即为所求的个数。原创 2024-05-17 10:26:24 · 43 阅读 · 0 评论 -
华为OD机试算法:数组组成的最小数字
一行用半角逗号分割的字符串记录的整型数组,0 < 数组长度 <= 100,0 < 整数的取值范围 <= 10000。数组长度超过3,需要选3个元素组成最小数字,21305由21,30,5三个元素组成的数字,为所有组合中最小的数字。由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字。对于每个可能的3个元素的组合,计算它们组成的数字,并记录下最小的数字。给定一个整型数组,请从该数组中选择3个元素组成最小数字并输出。如果数组长度大于等于3,则从数组中选择3个元素组成最小数字。原创 2024-05-17 10:24:33 · 104 阅读 · 0 评论 -
华为OD机试算法:水仙花数
从10^(n-1)开始遍历到10^n-1之间的所有整数,对于每个整数,计算其各位数字的n次方和,如果等于该整数本身,则说明找到了一个水仙花数。例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。每找到一个水仙花数,将计数器count加1,直到count等于m时,返回当前的水仙花数。如果遍历完所有的整数都没有找到第m个水仙花数,返回最后一个水仙花数和m的乘积。首先,根据输入的n,判断是否在3到7之间。所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。原创 2024-05-17 10:22:59 · 146 阅读 · 0 评论 -
华为OD机试算法:小明找位置
算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;第一行:输入已排成队列的小朋友的学号(正整数),以","隔开;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。输出一个数字,代表队列位置(从1开始)。对整数列表进行二分查找,找到小明应该排的位置。小朋友出操,按学号从小到大排成一列;将输入的学号字符串转换为整数列表。输出小明应该排的位置(从1开始)。原创 2024-05-17 10:10:17 · 94 阅读 · 0 评论 -
华为OD机试算法:小朋友来自多少小区
可以通过遍历字典,找到最大的小朋友数量,然后将其与字典的长度相加得到结果。首先,我们需要统计每个小区的小朋友数量。可以使用一个字典(或哈希表)来存储每个小区的小朋友数量。每个小区的小朋友数量最多 1000 人,也就是 garden[i] 的范围为 [0, 999]然后,遍历 garden 数组,将每个小区的小朋友数量累加到字典中。第一个小朋友反馈有两个小朋友和自己同一小区,即此小区有3个小朋友。请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?每个小朋友去了解与自己同一个小区的小朋友还有几个。原创 2024-05-17 10:09:02 · 255 阅读 · 0 评论 -
华为OD机试算法:寻找相同子串
然后,我们可以使用Python的字符串方法find()来查找子串p在字符串t中的位置。如果找到了,就输出该位置+1(因为下标从左到右依次为1,2,3,…如果能从t中找到一个和p相等的连续子串,则输出该子串第一个字符在t中的下标,下标从左到右依次为1,2,3,…给你两个字符串t和p,要求从t中找到一个和p相同的连续子串,并输出该子串第一个字符的下标。如果含有多个这样的子串,则输出第一个字符下标最小的。我们需要读取输入数据,包括字符串t和p。输入文件包括两行 分别表示字符串t和p。保证t的长度不小于p。原创 2024-05-17 10:04:04 · 63 阅读 · 0 评论 -
华为OD机试算法:用连续自然数之和来表达整数
如果有多种表达式,输出要求为:自然数个数最少的表达式优先输出,每个表达式中按自然数递增的顺序输出,具体的格式参见样例。在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。整数 9 有三种表示方法,第1个表达式只有1个自然数,最先输出,首先,我们需要找到所有可能的连续自然数之和的表达式。然后,我们需要计算每个表达式中的自然数个数。最后,我们需要按照题目要求的格式输出结果。该整数的所有表达式和表达式的个数。原创 2024-05-17 09:48:21 · 36 阅读 · 0 评论 -
华为OD机试算法:全排列
给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。对于每个字符,将其出现次数除以该字符在字符串S中的总出现次数,得到该字符的贡献值。将每个字符的贡献值相乘,再乘以字符串S的阶乘,得到所有不相同的排列数。如:S为ABA,则不同的排列有ABA、AAB、BAA三种。首先统计字符串S中每个字符出现的次数,可以使用字典来存储。输入一个长度不超过10的字符串S,我们确保都是大写的。然后计算字符串S的阶乘,即S的长度的阶乘。原创 2024-05-16 09:35:58 · 90 阅读 · 0 评论 -
华为OD机试算法:计算礼品发放的最小分组数目
b. 从排序后的价格列表中取出最大的两个价格,将它们作为一组,并将 count 加 1。c. 继续从剩余的价格列表中取出最大的两个价格,将它们作为一组,并将 count 加 1。为使得参加晚会的同事所获得的小礼品价值相对平衡,需要把小礼品根据价格进行分组,但每组最多只能包括两件小礼品,并且每个分组的价格总和。第二行数据为每个小礼品的价格,按照空格隔开,每个礼品价格不超过分组价格和的上限。首先,我们需要将输入的小礼品价格按照从大到小的顺序进行排序。你的任务是写一个程序,找出分组数最少的分组方案,并输出。原创 2024-05-16 09:21:29 · 97 阅读 · 0 评论 -
华为OD机试算法:报数游戏
他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。首先判断输入参数M是否在合理范围内,即大于1且小于100。如果输入参数M小于等于1或者大于等于100,输出“ERROR!100个人围成一圈,每个人有一个编码,编号从1开始到100。当报数为M时,将该人从列表中移除,并将报数重置为1。创建一个长度为100的列表,表示围成一圈的人。请问最后剩余的人在原先的编号为多少?初始化报数为1,从第一个人开始报数。输入M为3,最后剩下两个人。输入M为4,最后剩下三个人。原创 2024-05-13 15:16:36 · 119 阅读 · 0 评论