米哈游3.19笔试

第一题色盲问题,用了好几个dfs,过40%,提示超时

line1 = input().strip().split(' ')
m = int(line1[0])
n = int(line1[1])
graph = [['' for _ in range(n)] for _ in range(m)]
i = 0
while i < m:
    line = input()
    graph[i] = [m for m in line]
    i += 1

R = 0
B = 0
G = 0
num1 = 0
num2 = 0
def dfs1(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'R':
        return
    graph[i][j] = 'D'
    dfs1(i-1, j)
    dfs1(i+1, j)
    dfs1(i, j-1)
    dfs1(i, j+1)

def dfs2(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'B':
        return
    graph[i][j] = 'A'
    dfs2(i-1, j)
    dfs2(i+1, j)
    dfs2(i, j-1)
    dfs2(i, j+1)

def dfs3(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'G':
        return
    graph[i][j] = 'A'
    dfs3(i-1, j)
    dfs3(i+1, j)
    dfs3(i, j-1)
    dfs3(i, j+1)

def dfs4(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'A':
        return
    graph[i][j] = 'Z'
    dfs4(i-1, j)
    dfs4(i+1, j)
    dfs4(i, j-1)
    dfs4(i, j+1)

for i in range(m):
    for j in range(n):
        if graph[i][j] == 'R':
            dfs1(i, j)
            R += 1
            num1 += 1
        elif graph[i][j] == 'B':
            dfs2(i, j)
            num1 += 1
        elif graph[i][j] == 'G':
            dfs3(i, j)
            num1 += 1
for i in range(m):
    for j in range(n):
        if graph[i][j] == 'A':
            dfs4(i, j)
            num2 += 1 
print( num1 - (num2+R))    

第二题删除或增加s中的mhy,得到目标子串t,感觉思路和别人po出来的一样啊,只过了40%,有大佬能帮我看看问题吗

import collections
n = int(input())
i = 0
hash_table1 = collections.defaultdict(int)
hash_table2 = collections.defaultdict(int)
while True:
    try:
        s1 = input()
        s2 = input()
        t1 = ""
        t2 = ""
        m = len(s1) + 1
        n = len(s2) + 1
        for ch in s1:
            if ch == 'm' or ch == 'h' or ch == 'y':
                hash_table1[ch] += 1
            else:
                t1 += ch
        for ch in s2:
            if ch == 'm' or ch == 'h' or ch == 'y':
              hash_table2[ch] += 1
            else:
                t2 += ch

        if t1 == t2 and (hash_table1['m'] - hash_table2['m']) == (hash_table1['h'] - hash_table2['h']) and (hash_table1['y'] - hash_table2['y']) == (hash_table1['m'] - hash_table2['m']) and (hash_table1['y'] - hash_table2['y']) == (hash_table1['h'] - hash_table2['h']):
            print("Yes")
        else:
            print("No")
    except:
        break
    

#24届实习生##我的实习求职记录#
全部评论
第二题思路是什么呀,求教
1 回复 分享
发布于 2023-03-19 23:46 江苏
题面分享:https://www.nowcoder.com/discuss/467108267630534656
点赞 回复 分享
发布于 2023-03-20 08:40 北京
如果是hmmhy和mmhyh应该过不了吧
点赞 回复 分享
发布于 2023-03-20 00:04 美国
第一题用DFS的话,要标一下是否访问过,不然铁超时;第二题没看出来问题,,
点赞 回复 分享
发布于 2023-03-19 23:41 辽宁
是不是hashmap没有clear或者string没有clear
点赞 回复 分享
发布于 2023-03-19 23:38 江苏

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
tongx_:海投吧同学,面试中能学到更多东西呢,比如拷打项目,要是觉得没准备好就可以从中厂开始呢,但是腾讯都是无限复活
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

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