
算法题
文章平均质量分 55
大失(大龄失业者)
这个作者很懒,什么都没留下…
展开
-
华为od(D卷)求幸存数之和
给一个正整数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1的数字,该数被敲出,并从该点起跳,以此类推,直到幸存left个数为止。从1(索引为0)开始起跳,中间跳过4个数字因此依次删除 6,2,8,5,4,7。剩余 1,3,9,返回和为13。起跳点和命中点之间间隔jump 个数字,已被敲出的数字不计入在内。若起始时 left > len(nums) 则无需跳数处理过程。跳到末尾时无缝从头开始(循环查找),并可以多次循环。原创 2024-08-28 15:01:16 · 506 阅读 · 0 评论 -
华为od(D卷)路口最短时间问题
例如: 到达(1,2)的距离(0,0) -> (0,1) -> (0,2) ->(1,2) : 60*3+2+0 = 182;比(0,0) -> (0,1) -> (1,1) -> (1,2) 60*3+5+0 = 185;行走路线为 (0,0) -> (0,1) -> (1,1) -> (1,2) -> (2,2) 走了4格路,2个右转,1个左转,共耗时 60+0+60+5+60+0+60=245。现给出 n * m 个街口的交通灯周期,以及起止街口的坐标,计算车辆经过两个街口的最短时间。原创 2024-08-27 10:23:18 · 6925 阅读 · 0 评论 -
华为od(D卷) 堆内存申请
堆中已使用的两块内存是偏移从0开始的1字节和偏移从3开始的2字节,空闲的两块内存是偏移从1开始2个字节和偏移从5开始95字节根据分配原则,新申请的内存应从1开始分配1个字节,所以输出偏移为1。有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为:优先分配紧接着前一块已使用的内存,分配空间足够时分配最接近申请大小的空闲内存。表示0偏移地址开始的1个字节和3偏移地址开始的2个字节已被分配,其余内存空闲。第1行是1个整数,表示期望申请的内存字节数。若申请成功,输出申请到内存的偏移。原创 2024-08-21 16:22:56 · 906 阅读 · 2 评论 -
华为od(D卷) 用连续自然数之和来表达整数
在每个测试数据结束时,输出一行”Result:X”,其中X是最终的表达式个数。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。该整数的所有表达式和表达式的个数。每个表达式中按自然数递增的顺序输出,具体的格式参见样例。一个目标整数T (1 <=T<= 1000)一个整数可以由连续的自然数之和来表示。自然数个数最少的表达式优先输出。原创 2024-08-20 20:23:38 · 761 阅读 · 2 评论 -
华为od(D卷)火星文计算
火星人字符串表达式(结尾不带回车换行)输入的字符串说明: 字符串为仅由无符号整数和操作符 (#、$)组成的计算表达式例如: 123#4S5#67$78。3.火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算。4.保证输入的字符串为合法的求值报文,例如: 123#4$5#67$78。12345678987654321$54321 //32 位整数计算溢出。3+4-5*6/7 //有其它操作符。#4$5 //缺少操作数。4$5# //缺少操作数。4#$5 //缺少操作数。4 $5 //有空格。原创 2024-08-20 10:57:45 · 398 阅读 · 0 评论 -
华为od(D卷)小扇和小船的数字游戏
7的二进制为111,11的二进制为1011,1的个数相同,且11是满足条件的最小数。2的二进制为10,4的二进制为100,1的个数相同,且4是满足条件的最小数。输入一个正整数 n (1<=n <= 1e9)2:8对应二进制1000。3:其中1的个数都为1个。1:4对应二进制100。现在求 m 的最小数。原创 2024-08-19 21:38:57 · 225 阅读 · 0 评论 -
华为od(D卷) 贪吃的猴子
一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香蕉,每次都只能从行的开头或者末尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉。第二行为数组numbers的值每个数字通过空格分开。第一行为数组numbers的长度。第三行输入为N,表示获取的次数。按照题目要求能获取的最大数值。原创 2024-08-19 09:11:25 · 342 阅读 · 0 评论 -
华为od(D卷) 环中最长子串/字符成环找偶数LOX
状态计算: “laaall” 索引为0时,状态100, 索引为5是状态也是100,5-0=5:相当于索引0-5的子串多一个l,子串字符串0-0的时候正好也多一个l,相减正好都是偶数,不多不少。给你一个字符串 s,字符串 s 首尾相连成一个环形,请你在环中找出 ‘l’、‘o’、‘x’ 字符都恰好出现了偶数次最长子字符串的长度。状态标记:三位二进制分别记录LOX的出现次数, 1代表奇数次, 0代表偶数次,例如001代表l偶数次,o偶数次,x奇数次;输入是一串小写的字母组成的字符串。s只包含小写英文字母。原创 2024-08-18 15:24:26 · 709 阅读 · 1 评论 -
华为od(D卷) 环中最长子串/字符成环找偶数
给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。如果‘o’ 是奇数, 环在o处断开,减少一个‘o’, 最长子串就是字符串长度-1。如果‘o’ 是偶数, 最长子串就是本身。输入是一串小写字母组成的字符串。s 只包含小写英文字母。原创 2024-08-17 15:08:08 · 336 阅读 · 0 评论 -
华为od(D卷)整数划分排序/员工分月饼 (转载)
1、12 = 1 + 1 + 10 (Max1=10, Max2=1,不满足Max1-Max2转载 2024-08-16 23:21:30 · 72 阅读 · 0 评论 -
华为od(D卷)二叉树计算
左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。中序: 根据前序找到的“中” ,判断左右子树是谁。(此时可以提前计算左右子树的和)判断“中”是第一个元素。1行整数,表示求和树的中序遍历,以空格分割。第2行表示二叉树的前序遍历,以空格分割。输出1 -2 0 20 0 6。第1行表示二叉树的中序遍历,1 . 前序中序构造二叉树。原创 2024-08-16 23:51:24 · 464 阅读 · 0 评论 -
华为od(D卷)字符串序列判定
(例如,S=”ace”是L=”abcde”的一个子序列且有效字符是a、c、e,而”aec”不是有效子序列,且有效字符只有a、e)S中的每个字符在L中都能找到(可以不连续),且S在L中字符的前后顺序与S中顺序要保持一致。输入两个字符串S和L,都只包含英文小写字母。S长度<=100,L长度<=500,000。输入两个字符串S和L,都只包含英文小写字母。S长度<=100,L长度<=500,000。S串最后一个有效字符在L中的位置。先输入S,再输入L,每个字符串占一行。判定S是否是L的有效子串。原创 2024-08-15 09:51:00 · 257 阅读 · 0 评论 -
华为od(D卷)攀登者
例如上图中的数组,有3个不同的山峰,登上位置在3的山可以从位置0或者位置6开始,从位置0登到山顶需要消耗体力 1 * 2 + 1 * 2 + 2 * 2 = 8,从山顶返回到地面0需要消耗体力 2 * 1 + 1 * 1 + 1 * 1 = 4 的体力,按照登山路线 0 → 3 → 0 需要消耗体力12。例如:[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-08-14 15:21:09 · 469 阅读 · 0 评论 -
华为od(D卷)山脉的个数/攀登者
例如:[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。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度。攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。输入为一个整型数组,数组长度大于1。山峰所在索引分别为3,10,12。元素3和4 都是山峰,输出2.输出地图中山峰的数量。原创 2024-08-13 22:05:25 · 330 阅读 · 0 评论 -
华为od(D卷)最优结果的a数组数量/ 田忌赛马
给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] > b[i]。有两个a数组的排列可以达到最优结果,[12, 20, 11]和[11, 20, 12],故输出2。输入的第一行是数组a中的数字,其中只包含数字,每两个数字之间相隔一个空格,a数组大小不超过10。输入的第二行是数组b中的数字,其中只包含数字,每两个数字之间相隔一个空格,b数组大小不超过10。a无论如何都会全输,故a任意排列都行,输出所有a数组的排列,6种排法。输出所有可以达到最优结果的a数组数量。原创 2024-08-13 11:04:25 · 277 阅读 · 0 评论 -
华为od(D卷)最大社交距离
也就是说 位置2的社交距离是2和位置6,位置7的社交距离是相同的,所以才选择了索引小的2。那代码上面如何体现呢?相邻座位的距离如果相等,或者相差不超过1,那么中间位置的最大社交距离应该是相同的。seat -> 0 , 空在任何位置都行,但是要给他安排索引最小的位置,也就是座位 0。seat -> 4 , 要和旁边的人距离最远,应该坐到中间,也就是座位 4。最后进来员工,他会坐在第几个位置,如果位置已满,则输出 - 1。0, 4, 9 位置坐完之后坐的位置是2,而不是6,不是7;原创 2024-08-12 21:11:41 · 519 阅读 · 0 评论 -
华为od(D卷)求满足条件的最长子串的长度
如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。2、字母可以在子串中的任意位置;1、只包含 1 个字母(a。字符串(只包含字母和数字)原创 2024-08-12 08:59:36 · 260 阅读 · 0 评论 -
华为od(D卷)找朋友
在学校中,N 个小朋友站成一队, 第 i 个小朋友的身高为 height[i],第 i 个小朋友可以看到的右边的第一个比自己身高更高的小朋友 j,那么 j 是 i 的好朋友(j > i)。请重新生成一个列表,对应位置的输出是每个小朋友的好朋友位置,如果没有看到好朋友,请在该位置用 0 代替。小朋友人数范围是 [0, 40000]。第二行输入 N 个小朋友的身高 height[i],都是整数。第一行输入 N,表示有 N 个小朋友。输出N个小朋友的好朋友的位置。原创 2024-08-11 20:02:17 · 334 阅读 · 0 评论 -
华为od(D卷)最大N个数和最小N个数的和
给定一个数组,编写一个函数,来计算他的最大N个数和最小N个数的和,需要对数组进行去重。说明:最大2个数[100 95] 最小2个数[83 64],输出342。说明:最大两个数是[4 3]最小2个数是[3 2],有重叠输出为-1。第三行输入N表示需要计算的最大最小N的个数。第二行输入M个数,表示数组内容。输出最大N个数和最小N个数的和。第一行输入M,M表示数组大小。排序+去重:TreeSet。原创 2024-08-09 09:17:49 · 391 阅读 · 0 评论 -
华为od(D卷)亲子游戏
宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。第一行输入为 N,N 表示二维矩阵的大小。此地图有两条最短路径可到达宝宝位置,绿色线和黄色线都是最短路径6步,但黄色拿到的糖果更多,9个。输出妈妈在最短到达宝宝位置的时间内最多拿到多少糖果,行未无多余空格。,路上的所有糖果都可以拿走,不能走障碍物的格子,只能上下左右走。最短路径可能存在多条,计算每条最短路径的糖果,选择最少的即可。此地图妈妈无法到达宝宝的位置。原创 2024-08-08 14:53:24 · 792 阅读 · 1 评论