- 博客(777)
- 收藏
- 关注
原创 Linux发行版的数量(JS)
给你一个 n * n 的矩阵 isConnected,其中 isConnected[i][j] = 1 表示第 i 个发行版和第 j 个发行版直接关联,而 isConnected[i][j] = 0 表示二者不直接相连。本题可以利用并查集求解,本题要求的就是各个连通分量的节点数,并输出最大的连通分量的节点数。发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版。所以存在两个发行版集,发行版集中发行版的数量分别是3和1,所以输出3。返回最大的发行版集中发行版的数量。
2023-10-28 03:57:56
384
原创 日志限流(JS)
当然我们可能无法遇到tmp == total的情况,此时我们应该定义一个ans变量,保存tmp < total时的limit值,如果最终没有tmp == total的情况,则最后应该返回ans作为题解。如果一天产生的日志总条数大于total,则需要对当天内每单位时间产生的日志条数进行限流后保存,请计算每单位时间最大可保存日志条数limit,以确保当天保存的总日志条数不超过total。某软件系统会在运行过程中持续产生日志,系统每天运行N单位时间,运行期间每单位时间产生的日志条数保行在数组records中。
2023-10-27 11:55:21
809
原创 统一限载货物数最小值(JS)
每次都有干湿两辆货车同时等待,并且我们还是要按顺序装货,且干货装入干货车,湿货装入湿货车,我们可以决定货车什么时候走,一旦货车走了,则下一辆同类型的货车继续补上,只要还有对应类型的货车还有剩余。然后尝试该限载,是否可以完成装货,如果不可以则在此最低限载基础上+1,然后继续尝试,如果可以,则直接返回。货物由不同供货商从各地发来,各地的货物是依次进站,然后小明按照卸货顺序依次装货到中转车,一个供货商的货只能装到一辆车上,不能拆装,但是一辆车可以装多家供货商的货;货物1为干货,由1辆干货中转车中转,限载为3。
2023-10-27 11:55:11
769
原创 最快到达医院的方法(JS)
根据题目意思,去A只能Taxi,去B只能Walk,而对应的距离和速度都给出来了,因此解题逻辑应该没有什么悬念。新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。分别是到达A医院的距离,到达B医院的距离,计程车平均速度,上车等待时间,步行速度。经过一番调查,大壮明白了距离自己家最近的定点医院有两家。由于武汉封城,公交停运,私家车不能上路,交通十分不便。一行,计程车(Taxi)、步行(Walk)、相等(Same)给出X,Y,M,L,N的数据,请问大壮到达哪家医院最快?
2023-10-27 11:54:55
293
原创 回文字符串(JS)
对于可以平均分配到左,右部分的字母,我们可以将可以成对的字母记录到ans数组,将ans字典序升序,拼接字符串即为回文串左边部分,ans字典序降序,拼接字符串即为回文串右边部分。给你一个仅包含大小写字母的字符串,请用这些字母构造出一个最长的回文串,若有多个最长的,返回其中字典序最小的回文串。回文串必然是对称的,可以分为三部分,即: 左边部分, 中间部分, 右边部分。再比如 aa,其中左边部分是a,右边部分也是a,而中间部分是”“比如 aba,其中左边部分是a,右边部分也是a,而中间部分是b。
2023-10-27 11:54:37
85
原创 插队(JS)
某银行将客户分为了若干个优先级, 1 级最高, 5 级最低,当你需要在银行办理业务时,优先级高的人随时可以插队到优先级低的人的前面。当字符为 a 时,后面会有两个的正整数 num 和 x ,表示到来的客户编号为 num ,优先级为 x;我这边考虑了这种情况,如果p时,优先队列已经没有客户了,那么就输出空。输出包含若干行,对于每个 p , 输出一行,仅包含一个正整数 num , 表示办理业务的客户编号。现在给出一个人员到来和银行办理业务的时间序列,请你在每次银行办理业务时输出客户的编号。
2023-10-27 11:54:14
75
原创 称砝码(JS)
有N种物品,每种物品只有一个,第 i 个物品的重量为 wi,价值为pi,另外还有一个承重为W的背包,问该背包在不超载的情况下,装入物品的最大价值是多少?有N种物品,第 i 个物品的重量为 wi,价值为pi,数量为ci,另外还有一个承重为W的背包,问该背包在不超载的情况下,装入物品的最大价值是多少?举个例子:你有红富士苹果10个,那么是不是等价于红富士苹果A有1个,红富士苹果B有1个,...,红富士苹果J有1个?第二行:m1 m2 m3 ... mn --- 每种砝码的重量(范围[1,2000])
2023-10-27 11:53:50
84
原创 猜数字(JS)
我们假设某个谜底 和 输入的猜测数字 产生的猜测提示是real_result,而输入中猜测数字对应的猜测提示是expect_result,如果real_result == expect_result,那么说明说明当前谜底符合当前猜测数字的要求。即:真正的谜底,第一位不可能是5,第二位不可能是7,第三位不可能是1,第四位不可能是6。上面三行中,都是0A,即每一位上的数字都不是真正谜底的该位置的数字。这行的含义其实是:真正的谜底的四个数字不能取4,9,0,1这些。一个人设定一组四码的数字作为谜底,另一方猜。
2023-10-27 11:53:29
107
原创 无向图染色(JS)
但是节点1和任何其他节点不相连,也没有在边,因此下面代码,统计connect时,即统计每个节点的相邻节点,必然统计不到节点1,即connect[1] 的值为null,因此后续获取节点1的相邻节点时会得到null,此时我们应该要特殊处理null。因此,在求解全组合时,还可以进行剪枝优化,即判断新加入的节点 是否和 已存在的节点相邻,如果相邻,则剪枝,如果不相邻则继续递归。因此,处于两个连通分量中的节点必然不相连,则必然可以同时染红,因此直接用前面求染红节点组合就可以,不需要用并查集。
2023-10-27 11:53:05
119
原创 华为OD机试 - 最大化控制资源成本(JS)
因此,我们需要定义一个变量sum来记录重叠区间的权重和,当小顶堆弹出不重叠区间时,sum需要减去被弹出区间的权重,当我们向小顶堆压入重叠区间时,则sum需要加上被压入区间的权重。并行度是指这个任务运行时将会占用的服务器数量,一个服务器在每个时刻可以被任意任务使用但最多被一个任务占用,任务运行完成立即释放(结束时刻不占用)。有taskNum项任务,每个任务有开始时间(startTime),结束时间(endTime),并行度(parallelism)三个属性,一个整数,表示最少需要的服务器数量。
2023-10-27 11:52:53
84
原创 华为OD机试 - Excel单元格数值统计(JS)
接下来,我们就可以实现根据Excel坐标,获取到matrix矩阵元素的逻辑了,我们定义一个方法getCell,入参Excel坐标,然后通过上面的正则解析出来对应列号、行号,然后再根据Excel列号、行号转化求得matrix矩阵的行索引、列索引,进而求得matrix矩阵对应索引的值。解下来,我们需要弄清楚,如何将Excel坐标,如A1,B2,C3中的列号和行号解析出来,因为只有解析出来,才能方便处理,之后才能对应到matrix的索引。最后一行输入的字符串,表示给定的选中区域,形如A1:C2。
2023-10-27 11:52:42
76
原创 华为OD机试 - 探索地块建立(JS)
给一块n*m的地块,相当于n*m的二维数组,每个元素的值表示这个小地块的发电量;求在这块地上建立正方形的边长为c的发电站,发电量满足目标电量k的地块数量。第一行为四个按空格分隔的正整数,分别表示n, m , c k。本题最优解题思路是使用:二维矩阵前缀。后面n行整数,表示每个地块的发电量。关于二维矩阵前缀和,请看。输出满足条件的地块数量。
2023-10-27 11:52:29
68
原创 华为OD机试 - 天然蓄水库(JS)
上图中,L山峰和R山峰是可以达到该水位线要求的最外层的两端山峰,此时这两座山峰之间的每个山峰的储水量就是该水位线最大的储水量。例如,当山脉为s=[3,1,2]时,则选取s[0]和s[2]作为水库边界,则蓄水量为1,此时输出:0 2:1。其实用例2还可以选择山峰1和山峰8作为边界,也可以获得最大蓄水量15,如下图所示。但是此时两边界山峰的距离是6,相较于选择山峰1,6作为边界时距离4而言,更远。当山脉s=[3,2,1]时,不存在合理的边界,此时输出:0。选择山峰1和山峰6作为边界,则可获得最大蓄水量15。
2023-10-27 11:52:06
117
原创 华为OD机试 - 不含101的数(JS)
但是本题的1 ≤ l ≤ r ≤ 10^9,也就是说区间范围最大是 1 ~ 10^9,那么上面O(n)时间复杂度的算法会超时。输出的唯一一行包含一个整数,表示在 [l,r] 区间内一共有几个不含 101 的数。现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数?输入的唯一一行包含两个正整数 l, r( 1 ≤ l ≤ r ≤ 10^9)。本题需要使用数位DP算法,具体逻辑原理请看。将数字用二进制表示,不能出现 101。因此,我们需要找到一个性能更优的算法。
2023-10-27 11:51:52
67
原创 华为OD机试 - 服务中心选址(JS)
公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址:使服务中心到所有区域的距离的总和最小。我想了很久,如何求解某个点到有交集区域的最小距离和,但是没有什么好的办法,直到我死心准备用暴力法求解时,发现了一丝丝生机。即,一定存在一个 i ,其左边点 i-0.5 的,和其右边点 i+0.5 到各区域的距离和大于它。选择最佳的服务中心位置为location,请返回最佳的服务中心位置到所有区域的距离总和的最小值。可以发现,当服务中心选址10位置时,到各区间距离之和最小为78。
2023-10-27 11:51:44
69
原创 华为OD机试 - 连接器问题(JS)
然后不停的弹出connects栈顶元素,即最小长度的连接器,来对比diffs数组栈顶元素,即最短的空隙,如果最小长度的连接器 可以满足 最短的空隙,则将diffs栈顶元素弹出,否则不弹出,继续找下一个连接器。现在想要最少的区间数,即我们应该尽量让连接器不要浪费,即最好找到一个空隙长度相等的连接器,这样就可以防止一个很长的连接器来连一个很短的空隙,导致后面遇到很长的空隙时,没有适合的连接器使用。合并后:[1,10],[15,30],[33,40],使用5, 3两个连接器连接后只剩下 [1, 40]。
2023-10-27 11:51:36
83
原创 华为OD机试 - 区间交叠问题(JS)
而导致这个问题的根本原因是,栈顶区间10,12是被裁剪过的,因此导致它的起始位置落后了,即可能无法包含住升序后下一个区间的起始位置了,但是转念一想,先入栈的区间的起始位置肯定是要小于等于后入栈的区间的,因此栈顶区间被裁剪,说明栈顶区间和前一个区间必然是严密结合的,因此8,11的起始位置超出了栈顶区间,其实还是会被栈顶前一个区间包含进去。因此这里8,11不入栈。比较4,5区间和3,6区间,发现3,6完全涵盖2,5,因此2,5区间不再需要,可以从stack中弹栈删掉,即原始的2,5区间被删除了。
2023-10-26 10:55:03
101
原创 华为OD机试 - 最大平分数组(JS)
给定一个数组nums,可以将元素分为若干个组,使得每组和相等,求出满足条件的所有分组中,最大的平分组个数。4 个子集(5,1),(5,1),(5,1),(2,2,2)数据范围:1<=M<=50, 1<=nums[i]<=50。2 个子集(5, 1, 5,1),(2,2, 2,5,1)4 个子集(5),(1,4),(2,3),(2,3)2 个子集(5, 1, 4),(2,3, 2,3)属于类似,解题步骤基本相同。接着输入m个数,表示此数组。最大的平分组数个数为4个。最大的平分组数个数为4个。
2023-10-26 10:54:55
122
原创 华为OD机试 - 快递投放问题(JS)
用例第2~5行(对应第一行输入的4),对应4个包裹,以及它们要从哪个站点发往哪个站点。比如package1 A C,表示package1要从A发往C站点。每个站点有一些包裹要运输,每个站点间的包裹不重复,路上有检查站会导致部分货物无法通行,计算哪些货物无法正常投递?A-C无法通行package2,而package2刚好要从A发往C,因此受到影响,无法发送。A-B无法通行package1,但是package1要从A发往C,因此不受影响。用例第6~7行(对应第二行输入的2),表示两站点之间无法通行的包裹。
2023-10-26 10:54:47
67
原创 华为OD机试 - 垃圾短信识别(JS)
第一行是条目数,接下来几行是具体的条目,每个条目,是一对ID,第一个数字是发送者ID,后面的数字是接收者ID,中间空格隔开,所有的ID都为无符号整型,ID最大值为100;大众对垃圾短信深恶痛绝,希望能对垃圾短信发送者进行识别,为此,很多软件增加了垃圾短信的识别机制。输出该ID是否为垃圾短信发送者,并且按序列输出 L M 的值(由于 N 值不唯一,不需要输出);同一个条目中,两个ID不会相同(即不会自己给自己发消息)感觉是纯逻辑题,解析请看代码注释。最后一行为指定的ID。
2023-10-26 10:54:38
105
原创 华为OD机试 - 区块链文件转储系统(JS)
区块链底层存储是一个链式文件系统,由顺序的N个文件组成,每个文件的大小不一,依次为F1,F2,...,Fn。云平台考虑将区块链按文件转储到廉价的SATA盘,只有连续的区块链文件才能转储到SATA盘上,且转储的文件之和不能超过SATA盘的容量。在计算滑动窗口内部和的过程中,如果r++,则说明内部和可能会增大产生最大值,因此我们需要在r++时,判断并保留最大值。其中 1 ≤ n ≤ 100000,1 ≤ Fi ≤ 500。假设每块SATA盘容量为M,求能转储的最大连续文件之和。求能转储的最大连续文件大小之和。
2023-10-26 10:54:30
85
原创 华为OD机试 - 寻找符合要求的最长子串(JS)
由于本题描述中说:字符串s,每个字符范围[0-9a-zA-Z],以及屏蔽字符取值范围[0-9a-zA-Z],因此我们统计滑窗内部字符数量时,可以使用长度为128的数组来作为容器,因为要统计的字符的ASCII码必然在0~128范围中。第二行为:字符串s,每个字符范围[0-9a-zA-Z],长度范围[1, 10000]第一行为:要求不包含的指定字符,为单个字符,取值范围[0-9a-zA-Z]一个整数,满足条件的最长子串的长度;请你找出满足该条件的最长子串的长度。如果不存在满足条件的子串,则返回0。
2023-10-26 10:54:22
85
原创 华为OD机试 - 计算网络信号、信号强度(JS)
网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。输入为三行,第一行为 m 、n ,代表输入是一个 m × n 的数组。第三行是 i 、 j,代表需要计算array[i][j]的网络信号值。每连续 n 个数代表一行,再往后 n 个代表下一行,以此类推。对应的值代表对应的网格是空旷位置,还是信号源,还是阻隔物。输出对应位置的网络信号值,如果网络信号未覆盖到,也输出0。需要输出第1行第4列的网络信号值,如下图,值为2。array[m][n] 的二维数组代表网格地图,
2023-10-26 10:54:13
80
原创 华为OD机试 - 最优高铁城市修建方案(JS)
之后,我们在将 “可以建高铁” 的列表 按照成本费用升序排序(Kruskal算法),然后遍历排序后列表,依次将“可以建高铁” 的两个城市(两个顶点)尝试纳入连通分量中,如果有环,则不纳入,无环,则纳入,纳入的话,则将成本费用计入minFee中。其实,不仅仅在上面遇到相同权重边时,需要判断是否形成环,在前选择每一条边时都需要判断是否形成环,一旦选择的边能够形成环,那么我们就应该舍弃它,选择第二小的权重边,并继续判断。此时选择的边数已经达到了n-1条,因此可以结束逻辑,而现在得到的就是最小生成树。
2023-10-26 10:54:03
81
原创 华为OD机试 - 开放日活动、取出尽量少的球(JS)
因此,我们可以发现,maxCapacity取值2时,剩余球数最多,总数量小于SUM=14,符合要求,且取出的球最少,分别为0,1,0,3,3,0,2。如果maxCapacity值设置为2,则所有桶中的球最多只保留2个,如下图所示,剩余球总数13个,也符合要求。如果maxCapacity值设置为3,则所有桶中的球最多只保留3个,如下图所示,剩余球总数17个,不符合要求。如果maxCapacity值设置为1,则所有桶中的球最多只保留1个,如下图所示,剩余球总数7个,也符合要求。
2023-10-26 10:53:55
77
原创 华为OD机试 - 查找树中元素(JS)
y表示节点在该层内的相对偏移,从左至右,第一个节点偏移0,第二个节点偏移1,依次类推;matrix2一开始是空数组[],然后遍历得到根节点,压入第0行的数组元素中,但是第0行没有数组元素,因此就构造一个[val]压入,同理处理根节点的左子节点,然后继续处理左子节点的左子节点,因此第一个深搜回溯时,得到。上面这句话的意思是,matrix[i] (是一个一维数组),我们用arr = matrix[i],则arr[0]表示节点的内容值,arr[1]、arr[2]表示的是该节点的子节点在matrix中的索引位置。
2023-10-26 10:53:43
62
原创 华为OD机试 - 最多获得的短信条数、云短信平台优惠活动(JS)
Pi为充值 i 元获得的短信条数。第二行给出售价表, P1, P2, …Pn , 其中 1 ≤ n ≤ 100 ,现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。第一行客户预算M,其中 0 ≤ M ≤ 10^6。某云短信厂商,为庆祝国庆,推出充值优惠活动。如果大家不是很清楚完全背包的求解,可以看。本题是完全背包问题。
2023-10-26 10:53:30
54
原创 华为OD机试 - 优选核酸检测点(JS)
通过上图,我们可以看出:在10:30~12:00期间不会有人加入,只会有人离开,每分钟离开1人,因此到12:00时,最多离开 12*60 - (10*60+30) = 90人,而10:30时只有19人排队,因此到12:00时,检测点1只有0人排队。我们可以通过求区间交集的方式,来获取张三【出发时间,到达时间】 和 【8:00,10:00】以及【10:00, 12:00】,以及【12:00, 14:00】以及【14:00,20:00】的交集。张三最迟做完核酸的时间点,不能早于8点,不能迟于20点。
2023-10-26 10:53:16
157
原创 华为OD机试 - 士兵过河(JS)
对于动态规划解法,由于是从0人过河递推到N人过河,因此不需要二分尝试过河人数,而是可以直接基于dp[i]来实时比较T,如果超过了T,则说明只能过河 i 人,耗时dp[i-1]如果a[y] > a[x] * 10,我们应该选择a[x] * 10,即让较快的士兵单独划船过河,这样耗时更短。即在0~N中尝试找到成功过河的人数,其中0指的是成功过河的人数为0个,N指的是成功过河的人数为N个。假设x士兵划船用时为a[x],y士兵划船用时为a[y],a[x] < a[y]第三行:a[0] a[1] …
2023-10-26 10:53:07
55
原创 华为OD机试 - 最佳对手(JS)
下面代码中,我并没有按照队伍实力值得粒度进行分段,而是直接在分段过程中,计算出匹配队伍得实力差,即:分段记录得是两两匹配的实力差,上面按照队伍的分段,可以修改为实力差分段。可以发现,对于奇数个队伍而言,正向匹配的话,其实就是从第0个实力差开始选,然后隔一个选一个,即按照序号选的话,就是0,2,4,6,....,n-2。但是最后三个队伍,比如上图21,26,27,我们应该选择【21,26】和【26,27】中较小的,其实就是对于最后两个实力差5,1中选择较小的。游戏里面,队伍通过匹配实力相近的对手进行对战。
2023-10-26 10:52:56
79
原创 华为OD机试 - 组合出合法最小数(JS)
首先,按照前面的规则将数组元素排序,排序后,检查数组头元素是否以“0”开头,如果是的话,则开始遍历数组后面的元素,直到找到一个不以“0”开头的元素x,然后将元素x取出,并插入到数组头部。但是,如果数组中元素长度不全相同的话,则此时直接字典序升序,可能无法得到最小组合数,比如数组 [3, 32, 321],按照字典序升序后变为 [3, 32, 321],然后进行拼接,得到组合数332321,但是这个组合数显然不是最小的,最小的组合数应该是 321323。如上面标注的绿色 + 红色。
2023-10-26 10:52:47
77
原创 华为OD机试 - 任务调度(JS)
task5在21时刻到达,此时CPU正在执行task4,但是task5的优先级更高,因此task5获得执行权开始执行,task4进入等待队列,task5需要9个时间,但是执行到时刻22时,task6到达了,但是task6的优先级和task5相同,因此task5执行不受影响,task5会在21 + 9 = 30 时刻执行完成。task1在1时刻到达,此时CPU空闲,因此执行task1,task1需要执行5个时间,而执行期间没有新任务加入,因此task1首先执行完成,结束时刻是6。
2023-10-25 11:18:42
116
原创 华为OD机试 - 最优资源分配(JS)
某块业务芯片最小容量单位为1.25G,总容量为M*1.25G,对该芯片资源编号为1,2,...,M。用户配置序列:用户配置是按次序依次配置到芯片中,如果用户配置序列种某个配置超过了芯片总容量,丢弃该配置,继续遍历用户后续配置。用户配置是按次序依次配置到芯片中,如果用户配置序列种某个配置超过了芯片总容量,丢弃该配置,继续遍历用户后续配置。某块板卡上集成了N块上述芯片,对芯片编号为1,2,...,N,各个芯片之间彼此独立,不能跨芯片占用资源。M:每块芯片容量为 M * 1.25G,取值范围为:1~256。
2023-10-25 11:18:35
91
原创 华为OD机试 - 信号发射和接收(JS)
2.1、如果anth[i][j] > top,则将stack栈顶的top弹出,然后anth[i][j]对应的ret[i][j]++,表示anth[i][j]天线新增接收一个信号,而由于stack栈是递减栈,因此anth[i][j]还可以继续接收新栈顶天线的信号。其实这一步,不需要走到anth[0][2],因为anth[0][1] >= anth[0][0],因此anth[0][0]必然会被anth[0][1]遮挡,导致无法继续向东发射。
2023-10-25 11:18:27
57
原创 华为OD机试 - 二进制差异数(JS)
那么差异值就是0110,相似值就是1000,可以发现,A,B最高位的1,在按位异或运算下被换成0,在按位与的运算下,变成了1,因此这种情况下,相似值必然大于差异值,不符合要求。那么差异值就是1100,相似值就是0010,可以发现,A,B的最高位不同,因此按位异或运算下被换成了1,而按位与运算下变成了0,因此这种情况下,差异值必然大于相似值,符合要求。有了以上规律,我们可以统计出,每个数的最高位1处于哪一位,最高位1所处位数相同的数之间无法组合,最高位1所处位数不同的数之间可以组合。假设A=5,B=3;
2023-10-25 11:18:20
61
原创 华为OD机试 - 简单的解压缩算法(JS)
2、花括号中的字符串加数字N,表示花括号中的字符重复N次。例如压缩内容为{AB}3,表示原始字符串为ABABAB。1、字符后面加数字N,表示重复字符N次。例如:压缩内容为A3,表示原始字符串为AAA。另外,发现字符“{”时,需要记录它在stack栈中位置到idxs数组中;现需要实现一种算法,能将一组压缩字符串还原成原始字符串,1、备注说明:保证输入的都是合法有效的压缩字符串。若发现非数字的字符,则直接压入栈stack中;,例如:压缩内容可以{A3B1{C}3}3。3、字符加N和花括号后面加N,支持。
2023-10-25 11:18:13
55
原创 华为OD机试 - 字符串解密(JS)
将输入字符串1里的加扰子串“123ad”、“ffc79”去除后得到有效子串序列:"my"、"pt",其中"my"里不同字母的数量为2(有‘m’和'y'两个不同字母),“pt”里不同字母的数量为2(有'p'和't'两个不同字母);(1)这个有效子串里不同字母的数量不超过且最接近于string2里不同字母的数量,即小于或等于string2里不同字母的数量的同时且最大。string1由小写英文字母(’a’~’z’)和数字字符(’0’~’9’)组成,而加扰字符串由’0’~’9’、’a’~’f’组成。
2023-10-25 11:18:06
85
原创 华为OD机试 - 机房布局(JS)
这是因为,第2个M和第1个M存在交集后,我们就将第1个M弹出了,因此第2个M不仅代表了自身需要的电箱数,还代表了被弹出的第1个M的电箱数,因此即使第3个M和第2个M有交集,我们也不能将第2个M弹出,因为弹出的话,就会丢失第1个M需要的电箱数。接下来就是最少电箱的分配策略了,本题要求每台机柜的两边,至少有一边上配有电箱,那么最少电箱分配,肯定是尽可能地让两个机柜共享一个电箱。即,如果机柜处于 i 位置,则该机柜的区间为 [i-1, i+1],需要注意的是i-1和i+1不能超过边界,如果超过边界,则取边界值。
2023-10-25 11:17:58
77
原创 华为OD机试 - 数字加减游戏(JS)
因此,我们可以让x从0开始尝试,然后尝试1,-1,然后尝试2,-2,直到找到一个x能够让(比如用例1)(9 - 5*x) / 2 为一个整数。输入的唯一一行包含四个正整数s,t,a,b(1<=s,t,a,b<=105),并且a!输出的唯一一行包含一个整数,表示最少需要使用多少次a才能将数字s变成数字t。小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字s变成数字t。由于本题1<=s,t,a,b<=105,数量级较小,因此上面逻辑可行。请问小明最少可以用多少次a,才能将数字s变成数字t。
2023-10-25 11:17:51
82
原创 华为OD机试 - 基站维护工程师(JS)
题目中说 1 < n < 10 ,也就是说最多有9个站点,而我们求解n-1个站点的全排列,即8个站点的全排列,一共有8!某地方有 n 个基站(1 < n < 10),已知各基站之间的距离 s(0 < s < 500),并且基站 x 到基站 y 的距离,与基站 y 到基站 x 的距离并不一定会相同。到站点1的距离0,到站点2的距离2,到站点3的距离1。到站点1的距离1,到站点2的距离0,到站点3的距离2。到站点1的距离2,到站点2的距离1,到站点3的距离0。站点数n和各站点之间的距离(均为整数)
2023-10-25 11:17:43
55
Python基础,包括各种数据类型介绍以及推导式的使用
2023-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人