阿里巴巴3.14笔试编程题

1.
def count2(x):
    if x < 0:
        x = x & 0xffffffff
    bin2 = str(bin(x))[2: ]
    result = 0
    for i in str(bin2):
        if i == '1':
            result += 1
    return result

x = str(input())
y = int(x, 16)
print(count2(y))

2.(补一下第二题的思路)
    只要求出0点所在的行和列(四个方向)有没有1就可以了。
    但是貌似python不支持列的区间表达式,所以先求原始矩阵的0所在行有没有1,再将矩阵90°旋转之后求新的矩阵的0所在行有没有1,最后结果相加即可。边界处理的话就是在矩阵外面围一层2即可。
def light(array):
    result = 0
    for i in range(1, len(array) - 1):
        for j in range(1, len(array[0]) - 1):
            if array[i][j] == 1:
                continue
            else:
                if 1 in array[i][1: j]:
                    result += 1
                if 1 in array[i][j + 1: ]:
                    result += 1
    return result


arr = []
nm = list(map(int, input().strip().split()))
t1 = [2] * (nm[1] + 2)
arr.append(t1)
for i in range(nm[0]):
    temp = list(map(int, input().strip().split()))
    temp = [2] + temp + [2]
    arr.append(temp)
arr.append(t1)

arr2 = list(map(list, zip(*arr)))[:: -1]
print(light(arr) + light(arr2))

3.
没时间看了😂
#暑期实习##笔经##阿里巴巴##java工程师#
全部评论
为啥我的题和你的不一样🙃
点赞 回复 分享
发布于 2022-03-14 20:57

相关推荐

头像
11-18 16:08
福州大学 Java
影流之主:干10年不被裁,我就能拿别人一年的钱了,日子有盼头了
点赞 评论 收藏
分享
1 3 评论
分享
牛客网
牛客企业服务