📜  查找范围 [1, N*M+1] 中缺失的数字,表示为大小为 N*M 的矩阵(1)

📅  最后修改于: 2023-12-03 15:10:46.967000             🧑  作者: Mango

题目介绍

给定一个矩阵,大小为NM,其中的数字从 1 到 NM+1,但其中有一个数字缺失了。请编写一个函数,找出缺失的数字。

思路分析

首先我们可以计算出矩阵中所有数字的理论和:(N*M+1)*(N*M)/2。因为矩阵中所有数字的和就是从 1 到 N*M+1 的和减去缺失的数字。

接下来我们可以遍历整个矩阵,将每个数字的值相加起来,最后再用理论和减去实际和,就可以得到缺失的数字了。

代码实现
def findMissingNumber(matrix):
    n = len(matrix)
    m = len(matrix[0])
    totalSum = (n*m+1)*(n*m)//2
    matrixSum = sum(sum(row) for row in matrix)
    return totalSum - matrixSum
复杂度分析

时间复杂度:遍历整个矩阵,时间复杂度为O(N*M),其中 N 和 M 分别为矩阵的行数和列数。

空间复杂度:只用了几个常量变量,空间复杂度为O(1)。