8.22 腾讯笔试第五题

题目:把被1围住的区域,变成2(注意外侧虽然有0被1围住了一部分,但是并不能变成2)

思路:外部往里回溯,就相当于从外边往里侵蚀,但是侵蚀不到被1围起来的区域。从里往外很难判断。
参考LC417洋流问题。

输入样例:
6
0 1 0 0 1 0
1 0 1 1 0 1
0 1 0 0 1 0
0 1 0 0 1 0
1 0 1 1 0 1
0 1 0 0 1 0

输出;
0 1 0 0 1 0
1 2 1 1 2 1
0 1 2 2 1 0
0 1 2 2 1 0
1 2 1 1 2 1
0 1 0 0 1 0

Process finished with exit code 0
def recurCore(grid, x, y, n):
    if x < 0 or x >= n or y < 0 or y >= n or grid[x][y] == 1 or grid[x][y] == -1:
        return
    grid[x][y] = -1 #被侵蚀到的先置为-1, 等待最后的处理。

    recurCore(grid, x + 1, y, n)
    recurCore(grid, x - 1, y, n)
    recurCore(grid, x, y + 1, n)
    recurCore(grid, x, y - 1, n)

    return

n = int(input())
grid = [[0] * n for _ in range(n)]

for i in range(n):
    grid[i] = [int(x) for x in input().split()]

visi = [[False] * n for _ in range(n)]

for i in range(0, n):
    recurCore(grid, i, 0, n)
    recurCore(grid, i, n - 1, n)


for i in range(0, n):
    recurCore(grid, 0, i, n)
    recurCore(grid, n-1, i, n)

for i in range(n):
    for j in range(n):
        if grid[i][j] == -1:
            grid[i][j] = 0
        elif grid[i][j] == 0:
            grid[i][j] = 2


def row2str(row):
    s = ''
    for a in row:
        s += str(a) + ' '
    return s[:-1]


for i in range(n):
    print(row2str(grid[i]))
#腾讯笔试##笔试题目##腾讯#
全部评论
并查集的思路是先把周围的含0的合并到同一个连通分量,然后遍历矩阵去合并右边和下边的相邻节点,若当前节点为0且相邻右边节点为0,就合并。若相邻下边节点为0,则合并。最后再次遍历一次矩阵,比较为0的节点 的father其与外围为0的节点的father是否相同,若不同,则该区域需要改写成2,即轰炸区。
1 回复 分享
发布于 2021-08-23 00:19

相关推荐

不愿透露姓名的神秘牛友
昨天 14:18
点赞 评论 收藏
分享
背景&nbsp;双一流本硕&nbsp;双非大圆满&nbsp;只找游戏开发相关的岗位。&nbsp;8&nbsp;月初开始秋招到现在&nbsp;投了四五十家吧,&nbsp;目前两&nbsp;offer,&nbsp;不打算继续投了,把剩下的流程走完就开始沉淀了。目前两&nbsp;offer&nbsp;一个是网易互娱测开&nbsp;base&nbsp;广州,一个是江娱互动客户端开发&nbsp;base&nbsp;北京。应该确定网易这个了,说实话北京这个我挺想去的,这家的产品和工作氛围我了解了也不错,是那种踏实做事的,可惜我是广东人。网易的测开是调剂的二志愿,看了下有内部转岗机会,所以打算后面找个时间提前实习,沉淀下再做一个&nbsp;demo&nbsp;作品,写一些&nbsp;shader,增强下图形学渲染的能力,再学点编辑器开发。看到时候内部转岗或者春招继续投客户端开发这样。后面还能再动摇的话应该就灵犀或者腾子了吧(假如这两家确认的是客户端开发岗的话)。-----------------------补下timeline网易互娱&nbsp;测开&nbsp;8.2笔试&nbsp;&nbsp;8.21&nbsp;技术面&nbsp;&nbsp;8.29&nbsp;leader&amp;HRBP面(终面)&nbsp;9.8&nbsp;录用审核(之前一直显示面试中)9.14&nbsp;oc江娱互动&nbsp;客户端开发&nbsp;8.29主程面&nbsp;9.3&nbsp;制作人面&nbsp;9.5&nbsp;BOSS面&nbsp;9.11&nbsp;口头OC&nbsp;9.15&nbsp;正式offer后面考虑了一下&nbsp;&nbsp;感觉还是能走开发就开发吧,测开不太感兴趣,要内部活水转岗还要满1年才能申请。。
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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