米哈游笔试 0914

1.寻找k个"mihoyo"的最短子串
n, k = list(map(int, input().split()))
s = input()
target = 'mihoyo'


def func(s):
    if n < k * 6:
        print(-1)
        return
    elif target * k in s:
        idx = s.find(target * k, 0, n)
        print(idx, idx+6 * k-1)
        return
    else:
        l = 0
        r = 6
        count = k
        length = -1
        idx = -1
        while r <= n:
            while r <= n and count != 0:
                # 窗口滑动
                if s[r - 6:r] == target:
                    count -= 1
                    r += 6
                else:
                    r += 1
            if count == 0:
                if length == -1:
                    length = r - l-6
                    idx = l
                else:
                    if r - l-6 < length:
                        length = r - l-6
                        idx = l
                l=r-12
                count=k-1
        if length==-1:
            print(-1)
        else:
            # print(idx,length)
            print(idx, idx+length-1)
        return
func(s)
2.猜数:可能的值的数量
n=int(input())
nums=list(map(int,input().split()))
x,y=list(map(int,input().split()))
nums.sort()
if y==n&nbs***bsp;x==n:
    print("infinity")
else:
    maxv=nums[y]
    minv=nums[y-1]+1
    if maxv>=minv:
        pos=maxv-minv+1
        print(pos)
    else:
        print(0)
3.树:连通块的数量(暂时按二叉树做的,忘记题目有没有限定树的类别了。若为多叉树,不适用)
if __name__=='__main__':
    sum=0
    def dfs(edges,start,end):
        global sum
        lis=[]
        for (x,y) in edges:
            if x==start and y!=end:
                lis.append(y)
            elif y==start and x!=end:
                lis.append(x)
        if len(lis)==1:
            tmp=dfs(edges,lis[0],start)
            if lis[0]%2!=start%2:
                tmp+=1
            sum+=tmp
            return tmp
        elif len(lis)==2:
            h=dfs(edges,lis[0],start)+dfs(edges,lis[1],start)
            if lis[0]%2==start%2 and lis[1]%2==start%2:
                h-=1
            elif lis[0]%2!=start%2 and lis[1]%2!=start%2:
                h+=1
            sum+=h
            return h
        elif len(lis)==0:
            sum+=1
            return 1

    n,x=list(map(int,input().split()))
    edges=[]
    for i in range(n-1):
        edge=list(map(int,input().split()))
        edges.append(edge)
    dfs(edges,x,0)
    print(sum)




#米哈游##米哈游笔试#
全部评论
感谢大佬的分享
点赞 回复 分享
发布于 2022-10-23 16:10 河南

相关推荐

面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗&nbsp;&nbsp;他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了&nbsp;&nbsp;好好准备,等待明天的影石360和周四的腾讯了&nbsp;&nbsp;加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
迷茫的大四🐶:赶快咏鹅启动
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务