OPPO CV笔试一题

binaryImage = [[0, 1, 0], [1, 0, 1], [1, 0, 1], [1, 0, 1], [0, 0, 0]]
# binaryImage = [[0, 1, 0, 0], [1, 0, 1, 0], [1, 0, 1, 1], [1, 0, 0, 1], [0, 1, 1, 1]]
row = len(binaryImage)
col = len(binaryImage[0])
zuobiao = set()  # 1像素坐标
zeros = set()  # 环内0
ring = 1
for i in range(row):
    for j in range(col):
        if binaryImage[i][j] == 0:
            need = [[i - 1, j], [i + 1, j], [i, j - 1], [i, j + 1]]
            ans = 0
            for k in need:
                if 0 <= k[0] < row and 0 <= k[1] < col and binaryImage[k[0]][k[1]] == 1:
                    ans += 1
                if 0 <= k[0] < row and 0 <= k[1] < col and (k[0], k[1]) in zeros:
                    ans += 1
            if ans >= 3:
                zeros.add((i, j))
if len(zeros) == 0:
    print(0)
else:
    for zero in zeros:
        i = zero[0]
        j = zero[1]
        need = [[i - 1, j], [i + 1, j], [i, j - 1], [i, j + 1]]
        for k in need:
            if 0 <= k[0] < row and 0 <= k[1] < col and binaryImage[k[0]][k[1]] == 1:
                zuobiao.add((k[0], k[1]))
            if 0 <= k[0] < row and 0 <= k[1] < col and binaryImage[k[0]][k[1]] == 0 and (k[0], k[1]) not in zeros:
                ring = 0
                break
    if ring == 0:
        print(0)
    else:
        print(len(zuobiao))

#OPPO##笔经#
全部评论

相关推荐

08-05 14:06
门头沟学院 Java
驼瑞驰_招募评论官版...:哈哈哈,hr怪实诚的
点赞 评论 收藏
分享
牛客nb666号:看数据范围, -1e4~1e4, 用一个计数数组存一下, 再按个数让k减到0就行; 堆排不是O(n)的, 快速选择算法是O(n)但随机性较强
点赞 评论 收藏
分享
在投简历的柠檬精很想...:可以明确说,问的东西几乎是简历上的东西。你写的确实有点模糊。面试可能会问你一些常用的通信的问题,差分信号走线之类的,单片机最小系统啥的,模电,数电,基本电源,buck,boost,ldo之类的吧。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:58
怎么感觉全世界都转码了
蜻蜓队长:其实很多转码的人本身是非常适合学计算机的,只是自己当年没选对专业😂
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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