最新2022美团java后端实习面试题

共五道编程题,其中四道基础,一道偏难

一.字符串重排:

给你一个只包含小写字符的字符串s,你可以按任意顺序重排这个字符串中的字符,
请问重排过后的字符串中,最多能有多少个’acbcca’子串?
例如,字符串’dacbccab’中含1个’acbcca’子串,按其他方式重排后最多也只能包含1个’acbcca’子串;
字符串’acbccaacccb’中含1个’acbcca’子串,但重排成’acbccacbcca’ 后包含了2个’acbcca’子串。

测试用例:

输入:dacbccab

输出:1

输入:acbccaacccb

输出:2

二.会和:

数轴上有n个点,从左到右编号分别为1,2,…,n。
小美在1号点,小团在n号点,现在要选择一个点作为他们会合的地点,他们期望选择的点能让小美和小团到达会合点的距离差值尽量小。
你的任务是输出最小的距离差。

测试用例:

输入:

2

3 5

输出:

2

三.7的倍数:

小美喜欢7的倍数。桌面上有一些卡片,每张卡片上都印有一个数字,小美想从中挑选一些卡片,
使得卡片上的数字之和最大,由于小美很喜欢7的倍数,
她同时还希望挑选出的卡片的数字之和是7的倍数,请问她能挑选出的最大数字之和是多少?(注意,小美也可以一张卡片都不挑选)

测试用例:

输入:

4

1 4 6 6

输出:

7

四.中位数:

小团很喜欢中位数。现在给定一个序列,若其长度为奇数,那么其中位数是将序列中的数从小到大排序后位于正中间位置的数;
若其长度为偶数,那么其中位数是将序列中的数从小到大排序后位于最中间的两个数的平均值。
现在给你一个长度为n的序列,小团想知道所有长度为奇数的区间的中位数之和为多少。

测试用例:

输入:

4

2 3 1 4

输出:

15
样例解释
 4 
 2 3 1 4
长度为奇数的区间有[2], [3], [1], [4], [2 3 1], [3 1 4]
答案为2 + 3 + 1 + 4 + 2 + 3 = 15

五.异步操作:

小美因为各种原因无法按时返校。为了完成学业,小美只能在家里上网课。
网课由n个课程视频组成,编号为1到n。每个视频都需要从头看到尾才算完成该部分的学习,
且某些视频只能在看完指定的一些视频之后才能开始播放。因为小美的学习能力和她用来上网课的电脑性能都很强,
所以小美可以同时观看任意多个课程视频。现在小美想知道,若她不眠不休地学习,每个课程视频最早能在她开始学习多长时间之后才能结束

输入:

3

4 0

2 2 1 3

3 0

输出:

4 6 3

用例解释:

3(3个视频)

4 0(第一个视频,时长四分钟,不需要看其他视频才能解锁)

2 2 1 3(第二个视频,时长2分钟,需要看两个视频才能解锁,分别是第一个和第三个)

3 0(第三个视频,时长三分钟,不需要看其他视频才能解锁)

4 6 3分别是指看完各个视频的时间,即第一个和第三个可异步操作,同时观看,第二个视频需要看完第一个和第三个才能解锁,因此在六分钟时看完

你可能感兴趣的:(java,算法,数据结构)