📅  最后修改于: 2023-12-03 15:41:17.410000             🧑  作者: Mango
本题要求在给定矩阵中寻找所有大小为K的平方子矩阵,并返回它们中最小的元素值。
我们可以分别计算出每个大小为K的平方子矩阵中的最小元素值,并将这些最小值存储在一个列表中。具体步骤如下:
算法中两重循环的时间复杂度为O(n^2),每个正方形还需要遍历K^2个元素,所以总体时间复杂度为O(n^2 * K^2)。空间复杂度为O(n^2),存储所有正方形中的最小元素值。
def min_square(matrix, k):
"""
matrix: 一个n*n的二维列表,表示给定的矩阵
k: 平方子矩阵的边长
return: 所有平方子矩阵中的最小元素值
"""
n = len(matrix)
res = []
for i in range(n-k+1):
for j in range(n-k+1):
min_val = float("inf")
for x in range(i, i+k):
for y in range(j, j+k):
if matrix[x][y] < min_val:
min_val = matrix[x][y]
res.append(min_val)
return min(res)
matrix = [[9, 5, 4, 2, 1],
[7, 8, 6, 6, 2],
[4, 7, 4, 1, 7],
[2, 4, 8, 9, 4],
[3, 3, 5, 6, 6]]
k = 3
print(min_square(matrix, k)) # 输出:1