网易笔试第四题的思路是什么呀?

求二维矩阵中离1最近的0,我是这么写的判断距离的函数
def distance(arr,i,j):
    if i<0 or i>=len(arr) or j<0 or j>=len(arr[0]):
        return 0
    if arr[i][j] == 0:
        return 0
    else:
        return 1+min(distance(arr,i-1,j),distance(arr,i+1,j),distance(arr,i,j-1),distance(arr,i,j+1))


结果运行的时候报越界,整体代码如下:
def init_2d(m,n):
    d = []
    for i in range(m):
        d.append([])
        for j in range(n):
            d[i].append(0)
    return d

def distance(arr,i,j):
    if i<0 or i>=len(arr) or j<0 or j>=len(arr[0]):
        return 0
    if arr[i][j] == 0:
        return 0
    else:
        return 1+min(distance(arr,i-1,j),distance(arr,i+1,j),distance(arr,i,j-1),distance(arr,i,j+1))

line1 = input().split(" ")
m,n = int(line1[0]),int(line1[1])

d = init_2d(m,n)

for i in range(m):
    line = input()
    for j,s in enumerate(line):
        d[i][j] = int(s)
# print(distance(d,0,2))
# print(d)
arr1 = init_2d(m,n)
for i in range(m):
    for j in range(n):
        arr1[i][j] = distance(d,i,j)
print(arr1)



#笔试题目##网易##实习##笔经#
全部评论
leetcode 542. 01矩阵,感觉是一样的,可以去看看
点赞 回复 分享
发布于 2020-04-08 16:42

相关推荐

不愿透露姓名的神秘牛友
11-19 14:56
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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