飞码创造者
任职于互联网公司,后端研发人员,提供面试,后端,源代码,体系结构,算法等方面的指导交流。
展开
-
华为OD机试C卷-- 最小矩阵宽度(Java & JS & Python & C)
给定一个矩阵,包含 N * M 个整数,和一个包含 K 个整数的数组。现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。原创 2024-06-08 02:26:36 · 731 阅读 · 1 评论 -
华为OD机试C卷-- 最小传输时延Ⅱ(Java & JS & Python)
有M*N的节点矩阵,每个节点可以向8个方向(上、下、左、右及四个斜线方向)转发数据包,每个节点转发时会消耗固定时延,连续两个相同时延可以减少一个时延值(即当有K个相同时延的节点连续转发时可以减少K- 1个时延值),求左上角(0,0)开始转发数据包到右下角(M-1,N- 1)并转发出的最短时延。原创 2024-06-08 02:20:40 · 683 阅读 · 0 评论 -
华为OD机试C卷-- 转骰子(Java & JS & Python)
骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,可以向左翻转(用L表示向左翻转1次),可以向右翻转(用R表示向右翻转1次),可以向前翻转(用F表示向前翻转1次),可以向后翻转(用B表示向后翻转1次),可以逆时针旋转(用A表示逆时针旋转90度),可以顺时针旋转(用C表示顺时针旋转90度),现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。原创 2024-06-07 19:06:34 · 737 阅读 · 0 评论 -
华为OD机试C卷-- 中文分词模拟器(Java & JS & Python & C)
给定一个连续不包含空格的字符串,该字符串仅包含英文小写字母及英文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。**说明:** 1. 精确分词:字符串分词后,不会出现重叠。即"ilovechina",不同词库可分割为"i,love,china","ilove,china",不能分割出现重叠的"i,ilove,china",i 出现重叠 2. 标点符号不成词,仅用于断句 3. 词库:根据外部知识库统计出来的常用词汇例:dictionary = ["i", "love", "ch原创 2024-06-07 18:47:48 · 675 阅读 · 0 评论 -
华为OD机试C卷-- 智能驾驶(Java & JS & Python & C)
有一辆汽车需要从 m * n 的地图左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油。请你计算汽车确保从从起点到达终点时所需的最少初始油量。原创 2024-06-07 18:41:22 · 634 阅读 · 0 评论 -
华为OD机试C卷-- 找数字(Java & JS & Python & C)
小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1 ≤ n ≤ 1e9),小扇需要找到一个比 n 大的数字 m,使得 m 和 n 对应的二进制中 1 的个数要相同,如:原创 2024-06-07 18:36:58 · 551 阅读 · 0 评论 -
华为OD机试C卷-- 找到比自己强的人数(Java & JS & Python)
给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。原创 2024-06-05 18:38:05 · 863 阅读 · 0 评论 -
华为OD机试C卷-- 找单词(Java & JS & Python)
给一个字符串和一个二维字符数组,如果该字符串存在于该数组中,则按字符串的字符顺序输出字符串每个字符所在单元格的位置下标字符串,如果找不到返回字符串“N”。1.需要按照字符串的字符组成顺序搜索,且搜索到的位置必须是相邻单元格,其中“相邻单元格”是指那些水平相邻或垂直相邻的单元格。2.同一个单元格内的字母不允许被重复使用。3.假定在数组中最多只存在一个可能的匹配。原创 2024-06-05 18:32:55 · 858 阅读 · 0 评论 -
华为OD机试C卷-- 找城市(Java & JS & Python & C)
一张地图上有n个城市,城市和城市之间有且只有一条道路相连:要么直接相连,要么通过其它城市中转相连(可中转一次或多次)。城市与城市之间的道路都不会成环。当切断通往某个城市 i 的所有道路后,地图上将分为多个连通的城市群,设该城市i的聚集度为DPi(Degree of Polymerization),DPi = max(城市群1的城市个数,城市群2的城市个数,…城市群m 的城市个数)。请找出地图上DP值最小的城市(即找到城市j,使得DPj = min(DP1,DP2 … DPn))提示:如果有多个城原创 2024-06-05 18:30:17 · 877 阅读 · 2 评论 -
华为OD机试C卷-- 图像物体的边界(Java & JS & Python)
给定一个二维数组M行N列,二维数组里的数字代表图片的像素,为了简化问题,仅包含像素1和5两种像素,每种像素代表一个物体,2个物体相邻的格子为边界,求像素1代表的物体的边界个数。像素1代表的物体的边界指与像素5相邻的像素1的格子,边界相邻的属于同一个边界,相邻需要考虑8个方向(上,下,左,右,左上,左下,右上,右下)。原创 2024-06-05 18:16:19 · 829 阅读 · 0 评论 -
华为OD机试C卷-- 员工派遣(Java & JS & Python & C)
某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工。部门每个员工有一个员工号(1,2,3,......),工号连续,从1开始。部长派遣员工的规则: - 规则1:从 [1, k] 中选择员工派遣出去 - 规则2:编号为 x 的倍数的员工不能去 x 国,编号为 y 的倍数的员工不能去 y 国。原创 2024-06-05 18:15:16 · 821 阅读 · 0 评论 -
华为OD机试C卷-- 信道分配(Java & JS & Python & C)
算法工程师小明面对着这样一个问题 ,需要将通信用的信道分配给尽量多的用户:信道的条件及分配规则如下: - 所有信道都有属性:”阶”。阶为 r的信道的容量为 2^r比特; - 所有用户需要传输的数据量都一样:D比特; - 一个用户可以分配多个信道,但每个信道只能分配给一个用户; - 只有当分配给一个用户的所有信道的容量和>=D,用户才能传输数据; 给出一组信道资源,最多可以为多少用户传输数据?原创 2024-06-05 18:01:04 · 907 阅读 · 2 评论 -
华为OD机试C卷--小朋友分组最少调整次数(Java & JS & Python & C)
n 个学生排成一排,学生编号分别是 1 到 n,n 为 3 的整倍数。老师随机抽签决定将所有学生分成 m 个 3 人的小组(n == 3 * m) ,为了便于同组学生交流,老师决定将小组成员安排到一起,也就是同组成员彼此相连,同组任意两个成员之间无其它组的成员。因此老师决定调整队伍,老师每次可以调整任何一名学生到队伍的任意位置,计为调整了一次, 请计算最少调整多少次可以达到目标。注意:对于小组之间没有顺序要求,同组学生之间没有顺序要求。原创 2024-06-05 17:56:12 · 874 阅读 · 0 评论 -
华为OD机试C卷-- 文件缓存系统(Java & JS & Python)
请设计一个文件缓存系统,该文件缓存系统可以指定缓存的最大值(单位为字节)。文件缓存系统有两种操作: - 存储文件(put) - 读取文件(get) 操作命令为: - put fileName fileSize - get fileName 存储文件是把文件放入文件缓存系统中;读取文件是从文件缓存系统中访问已存在,如果文件不存在,则不作任何操作。当缓存空间不足以存放新的文件时,根据规则删除文件,直到剩余空间满足新的文件大小位置,再存放新文件。具体的删除规则为:>文件访问过后原创 2024-06-05 17:45:42 · 852 阅读 · 0 评论 -
华为OD机试C卷-- 文本统计分析(Java & JS & Python)
有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。规则如下:1. 文本以”;”分隔,最后一条可以没有”;”,但空文本不能算语句,比如”COMMAND A; ;”只能算一条语句。注意,无字符/空白字符/制表符都算作”空”文本;2. 文本可以跨行,比如下面,是一条文本,而不是三条;原创 2024-06-05 17:41:00 · 853 阅读 · 0 评论 -
华为OD机试C卷-- 推荐多样性(Java & JS & Python & C)
推荐多样性需要从多个列表中选择元素,一次性要返回 N 屏数据(窗口数量),每屏展示 K 个元素(窗口大小),选择策略:1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列表中为每屏选择一个元素,依次类推2.每个列表的元素尽量均分为 N 份,如果不够 N 个,也要全部分配完,参考样例图:(1)从第一个列表中选择 4 条 0 1 2 3,分别放到 4 个窗口中(2)从第二个列表中选择 4 条 10 11 12 13,分别放到 4 个窗口中(3)从第三个列表中选择原创 2024-06-05 17:37:35 · 898 阅读 · 1 评论 -
华为OD机试C卷-- 田忌赛马(Java & JS & Python & C)
给定两个只包含数字的数组a,b,调整数组 a 里面的数字的顺序,使得尽可能多的a[i] > b[i]。数组a和b中的数字各不相同。输出所有可以达到最优结果的a数组的结果。原创 2024-06-03 17:33:08 · 954 阅读 · 0 评论 -
华为OD机试C卷-- 特殊的加密算法(Java & JS & Python & C)
有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。**规则如下:** - 明文为一段数字串由 0~9 组成 - 密码本为数字 0~9 组成的二维数组 - 需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上下和左右是相邻的,注意:对角线不相邻,同一个单元格的数字不能重复使用。 - 每一位明文对应密文即为密码本中找到的单元格所在的行和列序号(序号从0开始)组成的两个数宇。如明文第 i 位 Data[i] 对应密码本单元原创 2024-06-03 17:30:22 · 947 阅读 · 0 评论 -
华为OD机试C卷-- 贪心歌手(Java & JS & Python & C)
一个歌手准备从A城去B城参加演出。按照合同,他必须在 T 天内赶到歌手途经 N 座城市歌手不能往回走每两座城市之间需要的天数都可以提前获知。歌手在每座城市都可以在路边卖唱赚钱。经过调研,歌手提前获知了每座城市卖唱的收入预期:如果在一座城市第一天卖唱可以赚M,后续每天的收入会减少D(第二天赚的钱是 M - D,第三天是 M - 2D ...)。如果收入减少到 0 就不会再少了。歌手到达后的第二天才能开始卖唱。如果今天卖过唱,第二天才能出发。贪心的歌手最多可以赚多少钱?原创 2024-06-03 17:26:36 · 952 阅读 · 1 评论 -
华为OD机试C卷-- 贪吃蛇(Java & JS & Python)
贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == ‘H’,表示该方格为贪吃蛇的起始位置;若arr[i][j] == ‘F’,表示该方格为食物,若arr[i][j] == ‘E’,表示该方格为空格。贪吃蛇初始长度为1,初始移动方向为向左。原创 2024-06-03 17:21:59 · 888 阅读 · 0 评论 -
华为OD机试C卷-- 数组二叉树(Java & JS & Python)
二叉树也可以用数组来存储,给定一个数组,树的根节点的值存储在下标1,对于存储在下标N的节点,它的左子节点和右子节点分别存储在下标2*N和2*N+1,并且我们用值-1代表一个节点为空。给定一个数组存储的二叉树,试求从根节点到最小的叶子节点的路径,路径由节点的值组成。原创 2024-06-03 17:13:47 · 886 阅读 · 0 评论 -
华为OD机试C卷-- 数字排列(Java & JS & Python & C & C++)
小明负责公司年会,想出一个趣味游戏:屏幕给出 1 ~ 9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 N 位置的数字,其中 N 为给出数字中最大的(如果不到这么多数字则给出最后一个即可)。注意:原创 2024-06-03 17:07:10 · 941 阅读 · 0 评论 -
华为OD机试C卷-- 任务最优调度(Java & JS & Python & C)
给定一个正整数数组表示待系统执行的任务列表,数组的每一个元素代表一个任务,元素的值表示该任务的类型。请计算执行完所有任务所需的最短时间。任务执行规则如下: 1. 任务可以按任意顺序执行,且每个任务执行耗时间均为1个时间单位。 2. 两个同类型的任务之间必须有长度为N个单位的冷却时间,比如N为2时,在时间K执行了类型3的任务,那么K+1和K+2两个时间不能执行类型3任务。 3. 系统在任何一个单位时间内都可以执行一个任务,或者等待状态。原创 2024-06-03 17:02:13 · 948 阅读 · 0 评论 -
华为OD机试C卷-- 亲子游戏(Java & JS & Python & C)
宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。游戏规则是妈妈必须在最短的时间(每个单位时间只能走一步)到达宝宝的位置,路上的所有糖果都可以拿走,不能走障碍物的格子,只能上下左右走。请问妈妈在最短到达宝宝位置的时间内最多拿到多少糖果(优先考虑最短时间到达的情况下尽可能多拿糖果)。原创 2024-06-03 16:58:15 · 981 阅读 · 1 评论 -
华为OD机试C卷-- 抢7游戏(Java & JS & Python & C)
A、B两个人玩抢7游戏,游戏规则为:A先报一个起始数字 X(10 ≤ 起始数字 ≤ 10000),B报下一个数字 Y (X - Y < 3),A再报一个数字 Z(Y - Z < 3),以此类推,直到其中一个抢到7,抢到7即为胜者;在B赢得比赛的情况下,一共有多少种组合?原创 2024-06-03 16:54:53 · 982 阅读 · 0 评论 -
华为OD机试C卷-- 启动多任务排序(Java & JS & Python & C)
一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。现在给出多条任务依赖关系的规则,请输入任务的顺序执行序列,规则采用贪婪策略,即一个任务如果没有依赖的任务,则立刻开始执行,如果同时有多个任务要执行,则根据任务名称字母顺序排序。例如:B任务依赖A任务,C任务依赖A任务,D任务依赖B任务和C任务,同时,D任务还依赖E任务。那么执行任务的顺序由先到后是:>A任务,E任务,B任务,C任务,D任务这里A和E任务都原创 2024-06-03 16:51:56 · 955 阅读 · 0 评论 -
华为OD机试C卷-- 攀登者2(Java & JS & Python & C)
攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。例如:[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。最高峰位置分别为3,10。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。原创 2024-06-03 00:08:49 · 1504 阅读 · 5 评论 -
华为OD机试C卷-- 模拟数据序列化传输(Java & JS & Python & C & C++)
模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 1. 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码) 2. 编码后数据参考图示,数据区的格式是:位置#类型#长度#数据,类型存储需要编码,Integer->0;String->1;Compose->2,长度是指数据的字符长度;数据仅允许数字、大小写字母、空格。原创 2024-06-03 00:05:15 · 1559 阅读 · 3 评论 -
华为OD机试C卷-- 模拟目录管理功能(Java & JS & Python & C)
实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。支持命令: 1. 创建目录命令:mkdir 目录名称,如 mkdir abc 为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作。此命令无输出。 2. 进入目录命令:cd 目录名称,如 cd abc 为进入abc目录,特别地,cd .. 为返回上级目录,如果目录不存在则不执行任何操作。此命令无输出。 3. 查看当前所在路径命令:pwd,输出当前路径字符串。 约束: 1.目录名称仅支持小写字母;mkdir原创 2024-06-02 23:56:39 · 1486 阅读 · 1 评论 -
华为OD机试C卷-- 迷宫问题(Java & JS & Python)
定义一个二维数组 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。原创 2024-06-02 23:53:03 · 1415 阅读 · 0 评论 -
华为OD机试C卷-- 没有回文串(Java & JS & Python & C)
回文串的定义:正读和反读都一样的字符串。现在已经存在一个不包含回文串的字符串,字符串的字符都是在英语字母的前N个,且字符串不包含任何长度大于等于2的回文串;请找出下一个字典序的不包含回文串的、字符都是在英语字母的前N个、且长度相同的字符串。如果不存在,请输出NO。原创 2024-06-02 23:50:03 · 1530 阅读 · 0 评论 -
华为OD机试C卷-- 路口最短时间问题(Java & JS & Python & C)
假定街道是棋盘型的,每格距离相等,车辆通过每格街道需要时间均为 timePerRoad;街道的街口(交叉点)有交通灯,灯的周期 T(=lights[row][col])各不相同;车辆可直行、左转和右转,其中直行和左转需要等相应 T 时间的交通灯才可通行,右转无需等待。现给出 n * m 个街口的交通灯周期,以及起止街口的坐标,计算车辆经过两个街口的最短时间。其中: 1. 起点和终点的交通灯不计入时间,且可以在任意方向经过街口 2. 不可超出 n * m 个街口,不可跳跃,但边线也是道路原创 2024-06-02 23:44:02 · 1829 阅读 · 1 评论 -
华为OD机试C卷-- 两个字符串间的最短路径问题(Java & JS & Python & C)
给定两个字符串,分别为字符串 A 与字符串 B。例如 A字符串为 "ABCABBA",B字符串为 "CBABAC" 可以得到下图 m * n 的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,映射成坐标系如下图。从原点 (0,0) 到 (0,A) 为水平边,距离为1,从 (0,A) 到 (A,C) 为垂直边,距离为1;假设两个字符串同一位置的两个字符相同,则可以作一个斜边,如 (A,C) 到 (B,B) 最短距离为斜边,距离同样为1。作出所有的斜边如下图,(0原创 2024-06-02 23:41:00 · 1677 阅读 · 2 评论 -
华为OD机试C卷-- 连续出牌数量(Java & JS & Python & C)
有这么一款单人卡牌游戏,牌面由颜色和数字组成,颜色为红、黄、蓝、绿中的一种,数字为0-9中的一个。游戏开始时玩家从手牌中选取一张卡牌打出,接下来如果玩家手中有和他上一次打出的手牌颜色或者数字相同的手牌,他可以继续将该手牌打出,直至手牌打光或者没有符合条件可以继续打出的手牌。现给定一副手牌,请找到最优的出牌策略,使打出的手牌最多。原创 2024-06-02 23:35:05 · 1519 阅读 · 0 评论 -
华为OD机试C卷-- 篮球游戏(Java & JS & Python & C)
幼儿园里有一个放倒的圆桶,它是一个线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。每个篮球有单独的编号,老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮球取出,当桶只有一个篮球的情况下,必须从左边取出。如老师按顺序放入1、2、3、4、5 共有 5 个编号的篮球,那么小朋友可以依次取出编号为1、2、3、4、5 或者 3、1、2、4、5 编号的篮球,无法取出 5、1、3、2、4 编号的篮球。原创 2024-06-02 23:31:02 · 1547 阅读 · 0 评论 -
华为OD机试C卷-- 快速人名查找(Java & JS & Python)
给一个字符串,表示用’,’分开的人名。然后给定一个字符串,进行快速人名查找,符合要求的输出。快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词。原创 2024-06-02 23:27:19 · 1620 阅读 · 1 评论 -
华为OD机试C卷-- 快递员的烦恼(Java & JS & Python & C)
快递公司每日早晨,给每位快递员推送需要送到客户手中的快递以及路线信息,快递员自己又查找了一些客户与客户之间的路线距离信息,请你依据这些信息,给快递员设计一条最短路径,告诉他最短路径的距离。原创 2024-06-02 23:25:06 · 1591 阅读 · 3 评论 -
华为OD机试C卷-- 可以组成网络的服务器(Java & JS & Python & C)
在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。原创 2024-06-02 23:19:51 · 1646 阅读 · 0 评论 -
华为OD机试C卷-- 可以处理的最大任务数(Java & JS & Python & C)
在某个项目中有多个任务(用task数组表示)需要你进行处理,其中: - task[i] = [si, ei] 你可以在 si ≤ day ≤ ei 中的任意一天处理该任务,请返回你可以处理的最大任务数。原创 2024-06-02 23:13:28 · 1517 阅读 · 0 评论 -
华为OD机试C卷-- 考古学家(Java & JS & Python)
有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗?原创 2024-06-02 23:10:57 · 1504 阅读 · 1 评论