【2022-09-14】米哈游秋招笔试三道编程题
第一题:最短子串
题目描述
米小游拿到了一个字符串,她想截取一个连续子串,使得该子串中包含至少k个连续的“mihoyo”。
你可以帮米小游求出最短的子串长度,以及对应的子串位置吗?
输入描述
第一行输入两个正整数n和k,用空格隔开。
第二行输入一个长度为n的、仅由小写字母组成的字符串。1≤k≤n≤200000
22 2 mihoyoyomihoyomimihoyo
输出描述
如果不存在这样一个连续子串,请输出-1。
否则输出两个正整数l,r,代表选取的子串的左下标和右下标(整个字符串左下标为0,右下标为n-1)。
请务必保证选择的连续子串包含至少k个"mihoyo",且长度是最短的。有多解时输出任意即可。
0 13
代码
Java版本
Python版本
CPP版本
第二题:猜数字
题目描述
米小游心中想了一个正整数,她邀请了n个人来猜这个数。每个人会猜一个数ai,然后米小游会告诉对方猜的结果:大于等于米小游想的数(≥)或者小于米小游想的数(<)。
猜谜结束后,米小游统计了共有x个≥和y个<。请你判断米小游初始想的数有多少种不同的可能?
输入描述:
输出描述:
input:
output:
输入描述
第一行输入一个正整数n,代表猜谜的人数。
第二行输入n个正整数ai,代表每个人猜的数字。
第三行输入两个整数x和y,用空格隔开。
1≤x+y=n≤1e5,1 ≤ ai ≤ 1e9
3 1 5 3 0 3
输出描述
如果有无穷多种可能,输出"infinity"
否则输出一个整数,代表米小游心中想的数的不同可能数量。
infinity
代码
Java版本
Python版本
第三题:树的连通块
题目描述
米小游有一棵有根树,树上共有n个节点。
米小游指定了一个节点x为根,然后定义所有相邻的、编号奇偶性相同的节点为一个连通块。
米小游想知道,所有子树(共有n个子树)的连通块数量之和是多少?
举个例子: 如上图,3号节点被指定为根
然后3-1-5作为一个连通块,4号节点和2号节点为单独的连通块。
那么1号节点到5号节点,每个节点的子树连通块数量分别为:2、1、3、1、1,总连通块数量是8。
输入描述
5 3 1 2 1 3 3 4 5 1
输出描述
8
