2023大厂真题+题解+在线评测分享!
最近我们一直在将收集到的机试真题制作数据并搬运到OJ上,供大家免费练习,体会真题难度。现在已录入100+道2022/23年最新大厂真题,同时在不断的更新。关注"塔子哥学算法"公众号获得网址以及每道题的题解+代码。
塔子哥学算法:codefun2000.com
第一题:题目内容
给定两个长度为n的数组a和b,你需要对a数组进行重排,使得 尽可能小。请你输出一个最优解。
输入描述
第一行输入一个正整数n
第二行输入n个正整数
第三行输入n个正整数
输出描述
n个正整数,代表重排后的a数组。如果有多个重排方式,输出任意即可
样例1
输入
4 2 1 3 2 5 2 4 2
输出
3 1 2 2
说明
重排后,= |3 - 5| + |1 - 2| + |2 - 4| + |2 - 2| =5
第二题:题目内容
给定一个01串,可以进行若干次如下操作: 选择两个相邻的字符,将它们同时取反。 请你求出最大化'1'字符数量的最小操作次数。
输入描述
一个长度不超过200000的、仅由’1'和’0组成的字符串。
输出描述
一个整数,代表最小的操作次数。
样例1
输入
0101
输出
2
说明 :0101->0011->1111
样例2
输入
101
输出
0
说明
无论怎么操作,1的数量最大值也只能是2,因此无需操作。
第三题:题目内容
给定一个正整数序列,从前往后进行数数:1,2,3,4,5,6,7,8,9,10,11,..... 试求当你数到多少时,0到9·每个数字各出现了至少k次?
注:我们定义“数字”为十进制下的数位,例如,3233出现了三个'3'和一个2。
共有t组询问,每组询问都是独立的。
输入描述
第一行输入一个正整数t,代表询问的次数。
接下来的t行,每行输入一个正整数k,代表一次询问。
对于10%的数据,
对于35%的数据,
对于100%的数据,
输出描述
输出t行,每行输出一个整数,代表每次的答案。
样例1
输入
3 1 2 3
输出
10 20 30
说明
在第1组询问中,当数到10时,0到9每个数至少出现了1次。
第四题:题目内容
给定一个长度为n的、由数字字符组成的字符串,你可以进行如下操作: 选择一个字符,使得其加1或者减1。 请注意,你无法对'0'进行减1操作,也无法对'9'进行加1操作。 若干次操作后,你需要使得该字符串存在一个长度为k的、所有字符都相同的连续子串。请你计算出操作的最小次数。
输入
5 3 2 9 1 8 3
输出
7
样例
将字符串变成"2 9 3 3 3"即可,需要操作7次 (对第三个字符进行2次加1操作,对第四个字符进行5次减1操作)。
第五题:题目内容
有一个任务job和两个机器m1,m2。执行这个任务的消耗为一个正整数,现在考虑到机器的负荷不能太大,因此我们需要将这个任务切割成个子任务,将它们分发给两个机器。由于技术所限,必须由第一个机器按切割顺序执行若干个子任务,然后再由第二个机器执行剩下的子任务。我们希望最终两个机器的消耗是相等的。请你编写一个函数,返回合法的切割方案数。由于答案可能过大你需要将答案对取模
样例1
输入
6, 3
输出
4
说明
共有4种切割方式: 6=1+2+3(前两个分配给1号机器,第三个分配给2号机器)。
6=2+1+3 (前两个分配给1号机器,第三个分配给2号机器)。
6=3+1+2 (第一个分配给1号机器,后两个分配给2号机器)。
6=3+2+1 (第一个分配给1号机器,后