3.25 阿里笔试题 2 AC python

3.25 阿里笔试题 2 AC python

给出一个二维矩阵,这个矩阵的每一行和每一列都是一个独立的等差数列,其中一些数据缺失了,现在需要推理隐藏但是可以被唯一确定的数字,然后对输入的查询进行回答。

输入描述:
第一行,n,m,q分别表示矩阵的行数,列数和查询的条数。
接下来的n行,每行m个数表示这个矩阵,0表示缺失数据。
接下来q行,每行两个数字i,j表示对矩阵中第i行第j列的数字进行查询。
输出描述:
如果可以确定该位置的数字,则输出数字,如果不能确定则输出UNKNOWN。
输入示例:
2 3 6
1 0 3
0 0 0
1 1
1 2
1 3
2 1
2 2
2 3
输出示例:
1
2
3
Unknown
Unknown
Unknown

# 对每行每列进行操作
def col(n):
    for i in n:
        test_i = i.copy()
        while 0 in test_i:
            test_i.remove(0)
        while 'unknown' in test_i:
            test_i.remove('unknown')

        if len(test_i) >= 2 and len(set(test_i)) == 1:
            for j in range(len(i)):
                i[j] = set(test_i)[0]
        elif len(test_i) >= 2 and len(set(test_i)) > 1:
            index_1 = i.index(test_i[0])
            index_2 = i.index(test_i[1])
            gongcha = int((test_i[1] - test_i[0]) / (index_2 - index_1))
            shouxiang = test_i[0] - (index_1 - 1) * gongcha
            for j in range(len(i)):
                if i[j] == 0 or 'unknown':
                    i[j] = shouxiang + (j - 1) * gongcha
        else:
            for j in range(len(i)):
                if i[j] == 0:
                    i[j] = 'unknown'
    return n
# 平整
def flatten(a):
    if not isinstance(a, (list, )):
        return [a]
    else:
        b = []
        for item in a:
            b += flatten(item)
    return b

# 转换
def transfor_list(n):
    df = [[0 for i in range(len(n))]for i in range(len(n[0]))]
    for i in range(len(n)):
        for j in range(len(n[i])):
            df[j][i] = n[i][j]
    return df


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值