Skip to content

230822 Make Matrix Beautiful

【题意】:给你一个方阵 matrix, 将该方阵变漂亮,意味着要让该方阵的每一行每一列都相等。问:漂亮的方阵的元素总和和原方阵的元素总和的最小差值是多少?

【Excepted】:

  • Time Complexity: O(N * N)
  • Auxiliary Space: O(N)

乍一看似乎很难,但静下来想一想会发现很简单,因为只要求输出差值,并没有问你每一个元素都要加上多少。

这道题应该是使用“贪心算法”吧,因为很容易有思路:每一行每一列都相等,那么最终漂亮的方阵,他的一行元素只和会是多少呢?很明显应该是原方阵中,数值最大的那一行(或者那一列)。有了这个想法后,直接完成代码,提交,✔️。耗时 10 分钟。

python3

【我的 - 贪心算法】

py
class Solution:
    def findMinOpeartion(self, matrix, n):
        all_total = 0
        col_total = [0] * n
        max_sum = 0
        for i in range(n):
            row_total = 0
            for j in range(n):
                all_total += matrix[i][j]
                row_total += matrix[i][j]
                col_total[j] += matrix[i][j]
            max_sum = max(max_sum, row_total)
        max_sum = max(max_sum, *col_total)

        return max_sum * n - all_total