
Java算法个人练习笔记
文章平均质量分 92
Java算法个人练习笔记
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
步入烟尘
多年实战经验,致力于解决广大程序员的问题,文章内基本都有关键核心代码,欢迎学习。
展开
-
转盘寿司【华为OD机试JAVA题解】
转盘寿司【华为OD机试JAVA题解】寿司店周年庆,正在举办优惠活动回馈新老客户。寿司转盘上总共有n盘寿司,prices[i]是第i盘寿司的价格,如果客户选择了第i盘寿司,寿司店免费赠送客户距离第i盘寿司最近的下一盘寿司 j,前提是prices[j]< prices[i],如果没有满足条件的 j,则不赠送寿司。每个价格的寿司都可无限供应输入描述: 输入的每一个数字代表每盘寿司的价格,每盘寿司的价格之间使用空格分隔,原创 2024-05-12 02:14:54 · 763 阅读 · 0 评论 -
手机App防沉迷系统【华为OD机试JAVA题解】
手机App防沉迷系统【华为OD机试JAVA题解】智能手机方便了我们生活的同时,也侵占了我们不少的时间。“手机App防沉迷系统”能够让我们每天合理的规划手机App使用时间,在正确的时间做正确的事。它的大概原理是这样的:1、在一天24小时内,可注册每个App的允许使用时段;2、一个时段只能使用一个App,举例说明:不能同时在09:00-10:00注册App2和App3;3、App有优先级,数值越高,优先级越高。注册使用时段时,如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段原创 2024-05-12 02:13:12 · 696 阅读 · 0 评论 -
传递悄悄话【华为OD机试JAVA题解】
传递悄悄话【华为OD机试JAVA题解】给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。原创 2024-05-11 00:37:19 · 7950 阅读 · 0 评论 -
小明找位置【华为OD机试JAVA题解】
小明找位置【华为OD机试JAVA题解】JS 代码使用 readline 模块来逐行读取输入。第一行输入为列表 w,第二行输入为整数 x。使用二分查找的思想,找到整数 x 在列表中应该插入的位置。输出结果是插入位置的索引加上1。以上代码实现了在一个有序列表中找到给定整数应该插入的位置,并输出插入位置的索引。原创 2024-05-11 00:35:50 · 828 阅读 · 0 评论 -
考勤信息【华为OD机试JAVA题解】
考勤信息【华为OD机试JAVA题解】公司用一个字符串来表示员工的出勤信息:absent:缺勤late:迟到leaveearly:早退present:正常上班现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:缺勤不超过一次;没有连续的迟到/早退;任意连续7次考勤,缺勤/迟到/早退不超过3次输入描述:原创 2024-05-07 00:13:20 · 635 阅读 · 0 评论 -
英文输入法【华为OD机试JAVA题解】
英文输入法【华为OD机试JAVA题解】主管期望你来实现英文输入法单词联想功能。需求如下:依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀。注意:英文单词联想时,区分大小写缩略形式如”don’t”,判定为两个单词,”don”和”t”输出的单词序列,不能有重复单词,且只能是英文单词,不能有标点符号原创 2024-05-09 12:00:00 · 881 阅读 · 0 评论 -
精准核酸检测【华为OD机试JAVA题解】
精准核酸检测【华为OD机试JAVA题解】为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准圈定可能被感染的人群。现在根据传染病流调以及大数据分析,得到了每个人之间在时间、空间上是否存在轨迹的交叉。现在给定一组确诊人员编号(X1, X2, X3, … Xn),在所有人当中,找出哪些人需要进行核酸检测,输出需要进行核酸检测的人数。(注意:确诊病例自身不需要再做核酸检测)需要进行核酸检测的人,是病毒传播链条上的所有人员,即有可能通过确诊病例所能传播到的所有人。例如:A是确诊病例,A和原创 2024-05-10 01:56:44 · 261 阅读 · 0 评论 -
游戏分组【华为OD机试JAVA题解】
游戏分组【华为OD机试JAVA题解】部门准备举办一场王者荣耀表演赛,有10名游戏爱好者参与,分为两队,每队5人。每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把10名参赛者分为实力尽量相近的两队。一队的实力可以表示为这一队5名队员的评分总和。现在给你10名参与者的游戏水平评分,请你根据上述要求分队,最后输出这两组的实力差绝对值。例:10名参赛者的评分分别为5 1 8 3 4 6 7 10 9 2,分组为(1 3 5 8 10)(2 4 6 7 9),两组实力差最小,差值为原创 2024-05-10 01:54:49 · 404 阅读 · 0 评论 -
分配土地【华为OD机试JAVA题解】
分配土地【华为OD机试JAVA题解】从前有个村庄,村民们喜欢在各种田地上插上小旗子,旗子上标识了各种不同的数字。某天集体村民决定将覆盖相同数字的最小矩阵形的土地的分配给为村里做出巨大贡献的村民,请问,此次分配土地,做出贡献的村民中最大会分配多大面积?输入描述:第一行输入m和n,m代表村子的土地的长,n代表土地的宽第二行开始输入地图上的具体标识原创 2024-05-08 02:20:26 · 367 阅读 · 0 评论 -
机械绘图【华为OD机试JAVA题解】
机械绘图【华为OD机试JAVA题解】绘图机器的绘图笔初始位i在原点(0.0)。 机器启动后其绘图笔按下面规则绘制直线:1 )尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E,2 )期间可通过指令在纵坐标轴方向进行偏移。井同时绘制直线,偏移后按规则1绘制直线;指令的格式为X offsetY。表示在横坐标X沿纵坐标方向偏移, offsetY为正数表示正向偏移,为负数表示负向偏移。给定了横坐标终点值E.以及若干条绘制指令。请计算给制的直线和横坐标轴。以及X-E的直线组成图形的面积。原创 2024-05-07 00:11:49 · 1014 阅读 · 0 评论 -
字符串变换最小字符串【华为OD机试JAVA题解】
字符串变换最小字符串【华为OD机试JAVA题解】给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。输入描述:一串小写字母组成的字符串s输出描述:按照要求进行变换得到的最小字符串补充说明:s是都是小写字符组成原创 2024-05-08 02:19:02 · 1178 阅读 · 0 评论 -
小华最多能得到多少克黄金【华为OD机试JAVA题解】
小华最多能得到多少克黄金【华为OD机试JAVA题解】小华按照地图去寻宝,地图上被划分成 m 行和 n 列的方格,横纵坐标范围分别是 [0, n−1]和[0, m-1]。在横坐标和纵坐标的数位之和不大于k的方格中存在黄金(每个方格中仅存在一克黄金),但横坐标和纵坐标之和大于k的方格存在危险不可进入。小华从入口(0,0)进入,任何时候只能向左,右,上,下四个方向移动一格。请问小华最多能获得多少克黄金?原创 2024-05-09 11:15:00 · 570 阅读 · 0 评论 -
分披萨【华为OD机试JAVA题解】
分披萨【华为OD机试JAVA题解】“吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块。但是粗心服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。由于两人都想吃到最多的披萨,他们商量了一个他们认为公平的分法:从“吃货”开始,轮流取披萨。除了第一块披萨可以任意选取以外,其他都必须从缺口开始选。他俩选披萨的思路不同。“馋嘴”每次都会选最大块的披萨,而且“吃货”知道“馋嘴”的想法。已知披萨小块的数量以及每块的大小,求“吃货”能分得的最大的披原创 2024-05-06 00:44:46 · 1113 阅读 · 0 评论 -
攀登者2【华为OD机试JAVA题解】
攀登者2【华为OD机试JAVA题解】禁登者喜欢寻找各种地图,并且尝试攀登到最高的山峰地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素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-05-06 00:46:12 · 1370 阅读 · 0 评论 -
攀登者1【华为OD机试JAVA题解】
攀登者1【华为OD机试JAVA题解】攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰地图表示为一维数组,数组的索引代表水平位置,数组的高度代表相对海拔高度。其中数组元素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-05-05 12:15:00 · 2073 阅读 · 0 评论 -
按身高和体重排排队【华为OD机试JAVA题解】
按身高和体重排排队【华为OD机试JAVA题解】某学校举行运动会,学生们按编号(1、2、3…n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;对于身高体重都相同的人,维持原有的编号顺序关系。请输出排列后的学生编号。输入描述:两个序列,每个序列由n个正整数组成(0 < n原创 2024-05-05 14:15:00 · 575 阅读 · 0 评论 -
堆内存申请【华为OD机试JAVA题解】
堆内存申请【华为OD机试JAVA题解】有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。输入描述:输入:第1行是1个整数,表示期望申请的内存字节数;第2到N行是用空格分割的两个整数,表示当前已分配的内存的情况,每一行表示一块已分配的连续内存空间,每行的第1和第2个整数分别表示偏移地址和内存块大小,如:原创 2024-05-03 01:07:29 · 870 阅读 · 0 评论 -
求字符串中所有整数的最小和【华为OD机试JAVA题解】
求字符串中所有整数的最小和【华为OD机试JAVA题解】输入字符串s,输出s中包含所有整数的最小和说明字符串s,只包含 a-z A-Z ± ;合法的整数包括1) 正整数 一个或者多个0-9组成,如 0 2 3 002 1022)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023输入描述:包含数字的字符串输出描述:所有整数的最小和原创 2024-05-03 01:05:30 · 701 阅读 · 0 评论 -
执行任务赚积分【华为OD机试JAVA题解】
执行任务赚积分【华为OD机试JAVA题解】现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。输入描述:第一行为一个数N,表示有N个任务,1原创 2024-05-02 01:22:29 · 207 阅读 · 0 评论 -
最多购买宝石数目【华为OD机试JAVA题解】
最多购买宝石数目【华为OD机试JAVA题解】橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i],0原创 2024-05-02 01:24:14 · 310 阅读 · 0 评论 -
停车场车辆统计【华为OD机试JAVA题解】
停车场车辆统计【华为OD机试JAVA题解】特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3),统计停车场最少可以停多少辆车,返回具体的数目。输入描述:整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。输出描述:整型数字字符串,表示最少停车数目。原创 2024-05-01 00:45:30 · 853 阅读 · 0 评论 -
小朋友来自多少小区【华为OD机试JAVA题解】
小朋友来自多少小区【华为OD机试JAVA题解】幼儿园组织活动,老师布置了一个任务:每个小朋友去了解与自己同一个小区的小朋友还有几个。我们将这些数量汇总到数组garden中。请根据这些小朋友给出的信息,计算班级小朋友至少来自几个小区?原创 2024-05-01 00:43:57 · 893 阅读 · 0 评论 -
最大N个数与最小N个数的和【华为OD机试JAVA题解】
最大N个数与最小N个数的和【华为OD机试JAVA题解】给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。说明:数组中数字的范围[0, 1000]最大N个数与最小N个数不能有重叠,如有重叠、输入非法返回-1输入描述第一行输入M,M标识数组大小第二行输入M个数,标识数组内容第三行输入N,N表达需要计算的最大、最小N个数输出描述输出最大N个数与最小N个数的和原创 2024-04-30 14:07:29 · 735 阅读 · 0 评论 -
最长合法表达式【华为OD机试JAVA题解】
最长合法表达式【华为OD机试JAVA题解】提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回0简单数学表达式只能包含以下内容0-9数字,符号 ±*说明:所有数字,计算结果都不超过long如果有多个长度一样的,请返回第一个表达式的结果数学表达式,必须是最长的,合法的操作符不能连续出现,如 ±-+1 是不合法的原创 2024-04-30 14:05:56 · 2729 阅读 · 0 评论 -
数的分解【华为OD机试JAVA题解】
数的分解【华为OD机试JAVA题解】给定一个正整数n,如果能够分解为m(m > 1)个连续正整数之和,请输出所有分解中,m最小的分解。如果给定整数无法分解为连续正整数,则输出字符串"N"。输入描述:输入数据为一整数,范围为(1, 2^30]输出描述:比如输入为:原创 2024-04-30 00:18:48 · 676 阅读 · 0 评论 -
智能成绩表【华为OD机试JAVA题解】
智能成绩表【华为OD机试JAVA题解】小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?输入描述:第1行输入两个整数,学生人数n和科目数量m。0原创 2024-04-30 00:20:18 · 550 阅读 · 0 评论 -
最长子字符串的长度(一)【华为OD机试JAVA题解】
最长子字符串的长度(一)【华为OD机试JAVA题解】给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。输入描述:输入是一串小写字母组成的字符串输出描述:输出是一个整数补充说明:原创 2024-04-29 16:29:19 · 506 阅读 · 0 评论 -
机场航班调度程序【华为OD机试JAVA题解】
机场航班调度程序【华为OD机试JAVA题解】XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。但是XX市机场只有一条起飞用跑道,调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起飞,调度员首先按照航空公司的缩写(航班号前2个字母)对所有航班进行排序,同一航空公司的航班再按照航班号的后4个数字进行排序最终获得安排好的航班的起飞顺序。请编写一段代码根据输入的航班号信息帮助调度员原创 2024-04-29 16:31:07 · 210 阅读 · 0 评论 -
求最多可以派出多少支团队【华为OD机试JAVA题解】
求最多可以派出多少支团队【华为OD机试JAVA题解】用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或2人组成,且1个人只能参加1个团队,请计算出最多可以派出多少支符合要求的团队?输入描述:53 1 5 7 98第一行数组代表总人数,范围[1,500000]原创 2024-04-28 15:08:04 · 768 阅读 · 0 评论 -
来自异国的客人【华为OD机试JAVA题解】
该客人有个幸运数字n(n原创 2024-04-28 15:06:48 · 559 阅读 · 0 评论 -
5G 网络建设【华为OD机试JAVA题解】
5G 网络建设【华为OD机试JAVA题解】现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间架设光纤的成本各不相同,且有些节点之间已经存在光纤相连,请你设计算法,计算出能联通这些站的最小成本是多少。注意:基站的联通具有传递性,入基站A与基站B架设了光纤,基站B与基站C也架设了光纤,则基站A与基站C视为可以互相联通原创 2024-04-25 13:36:33 · 841 阅读 · 0 评论 -
万能字符单词拼写【华为OD机试JAVA题解】
万能字符单词拼写【华为OD机试JAVA题解】有一个字符串数组words和一个字符串chars。假如可以用chars中的字母拼写出words中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。words的字符仅由 a-z 英文小写字母组成。 例如: abcchars 由 a-z 英文小写字母和 “?”组成。其中英文问号“?”表示万能字符,能够在拼写时当做任意一个英文字母。 例如: "?" 可以当做 "a"等字母。注意:每次拼写时,chars中的每个字母和万能字符都只能使用一次。输出词汇表wo原创 2024-04-27 18:41:20 · 871 阅读 · 0 评论 -
单行道汽车通行时间【华为OD机试JAVA题解】
单行道汽车通行时间【华为OD机试JAVA题解】速度快的车追上前车后,只能以前车的速度继续行驶。求最后一车辆到达目的地花费的时间。注:每辆车固定间隔一小时出发,比如第一辆车0时出发,第二辆车1时出发,以此类推输入描述第一行两个数字:M N分别代表车辆数和到终点的距离,以空格分隔。接下来M行,每行1个数字S,代表每辆车的速度。0原创 2024-04-25 13:28:00 · 313 阅读 · 0 评论 -
手机App防沉迷系统【华为OD机试JAVA题解】
手机App防沉迷系统【华为OD机试JAVA题解】智能手机方便了我们生活的同时,也侵占了我们不少的时间。“手机App防沉迷系统”能够让我们每天合理的规划手机App使用时间,在正确的时间做正确的事。它的大概原理是这样的:1、在一天24小时内,可注册每个App的允许使用时段;2、一个时段只能使用一个App,举例说明:不能同时在09:00-10:00注册App2和App3;3、App有优先级,数值越高,优先级越高。注册使用时段时,如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段原创 2024-04-25 13:30:00 · 737 阅读 · 0 评论 -
执行时长【华为OD机试JAVA题解】
执行时长【华为OD机试JAVA题解】为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务,假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成输入描述:第一个参数为GPU一次最多执行的任务个数,取值范围[1, 10000]第二个参数为任务数组长度,取值范围[1, 10000]第三个参数为任务数组,数字范围[1, 10000]原创 2024-04-27 18:23:22 · 982 阅读 · 0 评论 -
靠谱的车【华为OD机试JAVA题解】
靠谱的车【华为OD机试JAVA题解】程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。比如:23再多一块钱就变为25;39再多一块钱变为50;399再多一块钱变为500;小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。给出计费表的表面读数,返回实际产生的费用。原创 2024-04-25 13:46:13 · 1167 阅读 · 0 评论 -
阿里巴巴找黄金宝箱(I)【华为OD机试JAVA题解】
阿里巴巴找黄金宝箱(I)【华为OD机试JAVA题解】一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子,每个箱子上面贴有一个数字,箱子中可能有一个黄金宝箱。黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字和;第一个箱子左边部分的数字和定义为0;最后一个宝箱右边部分的数字和定义为0。原创 2024-04-24 01:45:32 · 514 阅读 · 0 评论 -
中文分词模拟器【华为OD机试JAVA题解】
中文分词模拟器【华为OD机试JAVA题解】给定一个连续不包含空格字符串,该字符串仅包含英文小写字母及英文文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。说明:1.精确分词: 字符串分词后,不会出现重叠。即“ilovechina” ,不同词库可分割为 “i,love,china” “ilove,china”,不能分割出现重叠的"i,ilove,china",i重叠出现2.标点符号不成词,仅用于断句3.词库:根据外部知识库统计出来的常用词汇例:dictionary=["i","lo原创 2024-04-24 01:47:15 · 928 阅读 · 0 评论 -
报文重排序【华为OD机试JAVA题解】
报文重排序【华为OD机试JAVA题解】对报文进行重传和重排序是常用的可靠性机制,重传缓冲区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。。输入描述:输入第一行为N,表示子报文的个数,0 < N原创 2024-04-23 01:46:10 · 311 阅读 · 0 评论 -
整数编码【华为OD机试JAVA题解】
整数编码【华为OD机试JAVA题解】实现一种整数编码方法,使得待编码的数字越小,编码后所占用的字节数越小。编码规则如下:编码时7位一组,每个字节的低7位用于存储待编码数字的补码字节的最高位表示后续是否还有字节,置1表示后面还有更多的字节,置0表示当前字节为最后一个字节。采用小端序编码,低位和低字节放在低地址上。编码结果按16进制数的字符格式输出,小写字母需转换为大写字母输入描述原创 2024-04-23 01:48:20 · 222 阅读 · 0 评论