华为机试真题https://www.online1987.com/
2022华为社招OD高频考试真题【7, 8月份Q1, Q2考试新编程题目】https://www.online1987.com/%E9%A2%98%E7%9B%AE%E5%AF%BC%E8%88%AA/
华为校招真题https://www.online1987.com/xiaozhao/
最长广播效应https://www.online1987.com/%E6%9C%80%E9%95%BF%E5%B9%BF%E6%92%AD%E6%95%88%E5%BA%94/
- 某通信网络中有N个网络结点,用1到N进行标识。
- 网络中的结点互联互通,且结点之间的消息传递有时延,相连结点的时延均为一个时间单位。
- 现给定网络结点的连接关系link[i]={u,v},其中u和v表示网络结点。
- 当指定一个结点向其他结点进行广播,所有被广播结点收到消息后都会在原路径上回复一条响应消息,请计算发送结点至少需要等待几个时间单位才能收到所有被广播结点的响应消息。
考古问题https://www.online1987.com/%E8%80%83%E5%8F%A4%E9%97%AE%E9%A2%98/
假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。
最小传输时延https://www.online1987.com/%E6%9C%80%E5%B0%8F%E4%BC%A0%E8%BE%93%E6%97%B6%E5%BB%B6/
- 某通信网络中有N个网络结点,用1到N进行标识。网络通过一个有向无环图表示,其中图的边的值表示结点之间的消息传递时延。
- 现给定相连节点之间的时延列表times[i]={u,v,w},其中u表示源结点,v表示目的结点,w表示u和v之间的消息传递时延。
- 请计算给定源结点到目的结点的最小传输时延,如果目的结点不可达,返回-1。
打印任务排序https://www.online1987.com/%E6%89%93%E5%8D%B0%E4%BB%BB%E5%8A%A1%E6%8E%92%E5%BA%8F/
- 某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,
- 然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。
- 请编写一个程序,根据输入的打印队列,输出实际的打印顺序。
报文解压缩https://www.online1987.com/%E6%8A%A5%E6%96%87%E8%A7%A3%E5%8E%8B%E7%BC%A9/
- 为了提升数据传输的效率,会对传输的报文进行压缩处理。
- 输入一个压缩后的报文,请返回它解压后的原始报文。
- 压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。
- 注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。
污染水域https://www.online1987.com/%E6%B1%A1%E6%9F%93%E6%B0%B4%E5%9F%9F/
输入一行字符串,字符串可转换为N*N的数组,数组可认为是一个水域,判断多少天后,水域被全部污染。
数组中只有0和1,0表示纯净,1表示污染,每天只可污染上下左右的水域,如果开始全部被污染,或永远无法污染,则返回-1。
单词搜索https://www.online1987.com/%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2/
找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。
假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。
注意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。
发广播https://www.online1987.com/%E5%8F%91%E5%B9%BF%E6%92%AD/
某地有N个广播站,站点之间有些有连接,有些没有。有连接的站点在接受到广播后会互相发送。
- 给定一个N*N的二维数组matrix,数组的元素都是字符’0’或者’1’。matrix[i][j]=‘1’,则代表i和j站点之间有连接,matrix[i][j] = ‘0’代表没连接,
- 现在要发一条广播,问初始最少给几个广播站发送,才能保证所有的广播站都收到消息。
斗地主https://www.online1987.com/%E6%9C%80%E9%95%BF%E7%9A%84%E9%A1%BA%E5%AD%90/
斗地主起源于湖北十堰房县,据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的,如今已风靡整个中国,并流行于互联网上。
牌型:单顺,又称顺子,最少5张牌,最多12张牌(3…A)不能有2,也不能有大小王,不计花色。
例如 3-4-5-6-7-8,7-8-9-10-J-Q,3-4-5-6-7-8-9-10-J-Q-K-A
可用的牌 3<4<5<6<7<8<9<10<J<Q<K<A<2<B(小王)<C(大王),每种牌除大小王外有四种花色
任务最优调度https://www.online1987.com/%E4%BB%BB%E5%8A%A1%E6%9C%80%E4%BC%98%E8%B0%83%E5%BA%A6/
给定一个正整数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。
请计算执行完所有任务所需的最短时间。
任务执行规则如下:
- 任务可以按任意顺序执行,且每个任务执行耗时间均为1个时间单位。
数据分类https://www.online1987.com/%E6%95%B0%E6%8D%AE%E5%88%86%E7%B1%BB/
对一个数据a进行分类,分类方法为:
此数据a(四个字节大小)的四个字节相加对一个给定的值b取模,如果得到的结果小于一个给定的值c,则数据a为有效类型,其类型为取模的值;如果得到的结果大于或者等于c,则数据a为无效类型。
比如一个数据a=0x01010101,b=3,按照分类方法计算(0x01+0x01+0x01+0x01)%3=1,
所以如果c=2,则此a为有效类型,其类型为1,如果c=1,则此a为无效类型;
又比如一个数据a=0x01010103,b=3,按照分类方法计算(0x01+0x01+0x01+0x03)%3=0,
比较版本号大小https://www.online1987.com/%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%E7%89%88%E6%9C%AC%E5%8F%B7%E7%9A%84%E5%A4%A7%E5%B0%8F/
输入两个版本号 version1 和 version2,每个版本号由多个子版本号组成。
子版本号之间由 “.” 隔开,由大小写字母、数字组成,并且至少有一个字符。
按从左到右的顺序比较子版本号,比较规则如下:
子版本号前面的0不参与比较,比如 001 和 1 是相等的。
小写字母 > 大写字母 > 数字
空字符和0相等,比如 1 和 1.0 相等
面试https://www.online1987.com/%E9%9D%A2%E8%AF%95/
某公司组织一场公开招聘活动,假设由于人数和场地的限制,每人每次面试的时长不等,并已经安排给定,用(S1,E1)、 (S2,E2)、 (Sj,Ej)…(Si < Ei,均为非负整数)表示每场面试的开始和结束时间。
面试采用一对一的方式,即一名面试官同时只能面试一名应试者,一名面试官完成一次面试后可以立即进行下一场面试,且每个面试官的面试人次不超过 m。
为了支撑招聘活动高效顺利进行,请你计算至少需要多少名面试官。
机器人走迷宫https://www.online1987.com/%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%B5%B0%E8%BF%B7%E5%AE%AB/
机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入。
机器人从0,0的位置走到x,y的位置并且只能向x,y增加的方向走,不能回退,
如代码类注释展示的样子,#表示可以走的方格,0代表障碍,机器人从0,0的位置只能向下或者向前走到出口,
其中会有不可达方格和陷阱方格。
不可达方格为第四行前三个,该机器人在行走路径上不可能走到的方格,陷阱方格如第一行最后两个,走进之后则不能抵达终点。
要求: 输出陷阱和不可达方格方格数量。
信道分配https://www.online1987.com/%E4%BF%A1%E9%81%93%E5%88%86%E9%85%8D/
算法工程师小明面对着这样一个问题 ,需要将通信用的信道分配给尽量多的用户:
信道的条件及分配规则如下:
1)所有信道都有属性:”阶”。阶为 r的信道的容量为 2^r比特;
2)所有用户需要传输的数据量都一样:D比特;
3)一个用户可以分配多个信道,但每个信道只能分配给一个用户;
4)只有当分配给一个用户的所有信道的容量和>=D,用户才能传输数据;
给出一组信道资源,最多可以为多少用户传输数据?
服务失效判断https://www.online1987.com/%E6%9C%8D%E5%8A%A1%E5%A4%B1%E6%95%88%E5%88%A4%E6%96%AD/
某系统中有众多服务,每个服务用字符串(只包含字母和数字,长度<=10)唯一标识,服务间可能有依赖关系,如A依赖B,则当B故障时导致A也故障。
依赖具有传递性,如A依赖B,B依赖C,当C故障时导致B故障,也导致A故障。
给出所有依赖关系,以及当前已知故障服务,要求输出所有正常服务。
依赖关系:服务1-服务2 表示“服务1”依赖“服务2”
不必考虑输入异常,用例保证:依赖关系列表、故障列表非空,且依赖关系数,故障服务数都不会超过3000,服务标识格式正常。
欢乐的周末https://www.online1987.com/%E6%AC%A2%E4%B9%90%E7%9A%84%E5%91%A8%E6%9C%AB/
小华和小为是很要好的朋友,他们约定周末一起吃饭。
通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达),求小华和小为都能到达的聚餐地点有多少个?
迷宫问题https://www.online1987.com/%E8%BF%B7%E5%AE%AB%E9%97%AE%E9%A2%98/
定义一个二维数组 N*M ,如 5 × 5 数组下所示:
int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。
数据范围: 2≤n,m≤10 , 输入的内容只包含 0≤val≤1。
找到比自己强的人数https://www.online1987.com/%E6%89%BE%E5%88%B0%E6%AF%94%E8%87%AA%E5%B7%B1%E5%BC%BA%E7%9A%84%E4%BA%BA%E6%95%B0/
给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。
输入
[[2,1],[3,2]]
输出
[0,1,2]
字符串比较https://www.online1987.com/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83/
给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:
1、该连续子串在A和B中的位置和长度均相同。
2、该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值。
猜密码https://www.online1987.com/%E7%8C%9C%E5%AF%86%E7%A0%81/
小杨申请了一个保密柜,但是他忘记了密码。只记得密码都是数字,而且所有数字都是不重复的。
请你根据他记住的数字范围和密码的最小数字数量,帮他算下有哪些可能的组合,规则如下:
1、输出的组合都是从可选的数字范围中选取的,且不能重复;
2、输出的密码数字要按照从小到大的顺序排列,密码组合需要按照字母顺序,从小到大的顺序排序。
3、输出的每一个组合的数字的数量要大于等于密码最小数字数量;
4、如果可能的组合为空,则返回“None”
分糖果https://www.online1987.com/%E5%88%86%E7%B3%96%E6%9E%9Cii/
Solo和koko是两兄弟,妈妈给了他们一大袋糖,每块糖上都有自己的重量。
现在他们想要将这些糖分成两堆。
分糖的任务当然落到了大哥Solo的身上,然而koko要求必须两个人获得的糖的总重量“相等”(根据Koko的逻辑),要不然就会哭的。
非常不幸的是,koko还非常小,并且他只会先将两个数转成二进制再进行加法,而且总会忘记进位。
电信号https://www.online1987.com/%E7%94%B5%E4%BF%A1%E5%8F%B7/
输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出,如果有相同长度的交替方波信号,输出任一即可,
方波信号高位用1标识,低位用0标识,如图
【最小传输时延】https://www.online1987.com/%E6%9C%80%E5%B0%8F%E4%BC%A0%E8%BE%93%E6%97%B6%E5%BB%B6-2/
有M*N的节点矩阵,每个节点可以向8个方向(上、下、左、右及四个斜线方向)转发数据包,每个节点转发时会消耗固定时延,
连续两个相同时延可以减少一个时延值(即当有K个相同时延的节点连续转发时可以减少K- 1个时延值),
求左上角(0,0)开始转发数据包到右下角(M-1,N- 1)并转发出的最短时延。
导师请吃火锅https://www.online1987.com/%E5%AF%BC%E5%B8%88%E8%AF%B7%E5%90%83%E7%81%AB%E9%94%85/入职后,导师会请你吃饭,你选择了火锅。
火锅里会在不同时间下很多菜。
不同食材要煮不同的时间,才能变得刚好合适。
你希望吃到最多的刚好合适的菜,但你的手速不够快,用m代表手速,每次下手捞菜后至少要过m秒才能再捞(每次只能捞一个)。
那么用最合理的策略,最多能吃到多少刚好合适的菜?
【字符串比较】https://www.online1987.com/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83/
给定字符串A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度:
1、该连续子串在A和B中的位置和长度均相同。
2、该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值。
竖直四子棋https://www.online1987.com/%E7%AB%96%E7%9B%B4%E5%9B%9B%E5%AD%90%E6%A3%8B/竖直四子棋的棋盘是竖立起来的,双方轮流选择棋盘的一列下子,棋子因重力落到棋盘底部或者其他棋子之上,当一列的棋子放满时,无法再在这列上下子。
一方的4个棋子横、竖或者斜方向连成一线时获胜。
现给定一个棋盘和红蓝对弈双方的下子步骤,判断红方或蓝方是否在某一步获胜。
简易内存池https://www.online1987.com/%E7%AE%80%E6%98%93%E5%86%85%E5%AD%98%E6%B1%A0/
- 请实现一个简易内存池,根据请求命令完成内存分配和释放。
- 内存池支持两种操作命令,REQUEST和RELEASE,其格式为:
- REQUEST=请求的内存大小 表示请求分配指定大小内存,如果分配成功,返回分配到的内存首地址;如果内存不足,或指定的大小为0,则输出error。
- RELEASE=释放的内存首地址 表示释放掉之前分配的内存,释放成功无需输出,如果释放不存在的首地址则输出error。
【最大出牌数量】https://www.online1987.com/%E6%9C%80%E5%A4%A7%E5%87%BA%E7%89%8C%E6%95%B0%E9%87%8F/
- 手里给一副手牌,数字从0-9,有r(红色),,g(绿色),b(蓝色),y(黄色)四种颜色,出牌规则为每次打出的牌必须跟上一张的数字或者颜色相同,否则不能抽选。
- 选手应该怎么选才能使得抽选的次数最大,并且输出这个最大次数。
【转骰子】https://www.online1987.com/%E8%BD%AC%E9%AA%B0%E5%AD%90/
骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,
可以向左翻转(用L表示向左翻转1次),
可以向右翻转(用R表示向右翻转1次),
可以向前翻转(用F表示向前翻转1次),
可以向后翻转(用B表示向后翻转1次),
可以逆时针旋转(用A表示逆时针旋转90度),
可以顺时针旋转(用C表示顺时针旋转90度),
现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。
骰子的初始状态和初始状态转动后的状态如图所示。
【字符串匹配】https://www.online1987.com/%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D/
给你一个字符串数组(每个字符串均由小写字母组成)和一个字符规律(由小写字母和.和*组成),识别数组中哪些字符串可以匹配到字符规律上。
‘.’ 匹配任意单个字符,’*’ 匹配零个或多个前面的那一个元素,所谓匹配,是要涵盖整个字符串的,而不是部分字符串。
100分题目-华为机试https://www.online1987.com/shezhao/100fefntimu/
数大雁https://www.online1987.com/%E6%95%B0%E5%A4%A7%E9%9B%81/一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。
具体的:
1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”。
2.大雁会依次完整发出”quack”,即字符串中’q’ ,‘u’, ‘a’, ‘c’, ‘k’ 这5个字母按顺序完整存在才能计数为一只大雁。如果不完整或者没有按顺序则不予计数。
3.如果字符串不是由’q’, ‘u’, ‘a’, ‘c’, ‘k’ 字符组合而成,或者没有找到一只大雁,请返回-1。
【补种未成活胡杨】https://www.online1987.com/%E8%A1%A5%E7%A7%8D%E6%9C%AA%E6%88%90%E6%B4%BB%E8%83%A1%E6%9D%A8/近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。
一个月后,有M棵胡杨未能成活。
现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?
【水仙花数】https://www.online1987.com/%E6%B0%B4%E4%BB%99%E8%8A%B1%E6%95%B0-2/给定非空字符串s,将该字符串分割成一些子串,使每个子串的ASCII码值的和均为水仙花数。
1、若分割不成功,则返回0;
2、若分割成功且分割结果不唯一,则返回-1;
3、若分割成功且分割结果唯一,则返回分割后子串的数目。
敏感字段加密https://www.online1987.com/%E6%95%8F%E6%84%9F%E5%AD%97%E6%AE%B5%E5%8A%A0%E5%AF%86/给定一个由多个命令字组成的命令字符串:
1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号;
2、命令字之间以一个或多个下划线_进行分割;
3、可以通过两个双引号””来标识包含下划线_的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现;
请对指定索引的敏感字段进行加密,替换为******(6个*),并删除命令字前后多余的下划线_。
如果无法找到指定索引的命令字,输出字符串ERROR。
【解密犯罪时间】https://www.online1987.com/%E8%A7%A3%E5%AF%86%E7%8A%AF%E7%BD%AA%E6%97%B6%E9%97%B4/警察在侦破一个案件时,得到了线人给出的可能犯罪时间,形如 “HH:MM” 表示的时刻。
根据警察和线人的约定,为了隐蔽,该时间是修改过的,
解密规则为:利用当前出现过的数字,构造下一个距离当前时间最近的时刻,则该时间为可能的犯罪时间。
每个出现数字都可以被无限次使用。
IPv4地址转换成整数https://www.online1987.com/ipv4%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2%E6%88%90%E6%95%B4%E6%95%B0/存在一种虚拟IPv4地址,由4小节组成,每节的范围为0~128,以#号间隔,格式如下:
(1~128)#(0~255)#(0~255)#(0~255)
请利用这个特性把虚拟IPv4地址转换为一个32位的整数,IPv4地址以字符串形式给出,要求每个IPvV4地址只能对应到唯一的整数上。
如果是非法IPv4,返回invalid IP。
矩形相交的面积https://www.online1987.com/%E7%9F%A9%E5%BD%A2%E7%9B%B8%E4%BA%A4%E7%9A%84%E9%9D%A2%E7%A7%AF/
- 给出3组点坐标(x, y, w, h),-1000<x,y<1000,w,h为正整数。
- (x, y, w, h)表示平面直角坐标系中的一个矩形:
- x, y为矩形左上角坐标点,w, h向右w,向下h。
- (x, y, w, h)表示x轴(x, x+w)和y轴(y, y-h)围成的矩形区域;
- (0, 0, 2, 2)表示 x轴(0, 2)和y 轴(0, -2)围成的矩形区域;
- (3, 5, 4, 6)表示x轴(3, 7)和y轴(5, -1)围成的矩形区域;
- 求3组坐标构成的矩形区域重合部分的面积。
正方形数量https://www.online1987.com/%E6%AD%A3%E6%96%B9%E5%BD%A2%E6%95%B0%E9%87%8F/输入N个互不相同的二维整数坐标,求这N个坐标可以构成的正方形数量。[内积为零的的两个向量垂直]
输入描述
第一行输入为N,N代表坐标数量,N为正整数。N <= 100
之后的 K 行输入为坐标x y以空格分隔,x,y为整数,-10<=x, y<=10
【数组连续和】https://www.online1987.com/%E6%95%B0%E7%BB%84%E8%BF%9E%E7%BB%AD%E5%92%8C/给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。
输入描述
第一行两个整数N x(0 < N <= 100000, 0 <= x <= 10000000)
第二行有N个正整数(每个正整数小于等于100)。
翻牌求最大分https://www.online1987.com/%E7%BF%BB%E7%89%8C%E6%B1%82%E6%9C%80%E5%A4%A7%E5%88%86/
给出n个牌数,在-100到100之间,求最大得分。
规则如下:连续翻牌,如果选当前牌,则总得分等于上一次翻牌总得分加上当前牌的数字,
如果当前总得分小于它前三次的总得分的话,那此次不翻牌,并且总得分就等于它前三次的得分。
1到3次翻牌数如果小于0的话就取0。
例子:1,-5,-6,4,7,2,-2