python 中的最小子矩阵

Smallest Submatrix in python

它包含一个具有唯一数字的 R*C 矩阵。我必须打印具有最小和最大整数的子矩阵

Input:  

5 6
73 31 19 10 27 12
82 66 15 23 64 89
17 40 74 41 99 38
46 79 91 28 57 35
94 97 45 55 33 56

Output:

10 27
23 64
41 99

The minimum integer in the matrix is 10
The maximum integer in the matrix is 99

这是我的代码:

a,b=map(int,input().split())
m=[list(map(int,input().split())) for i in range(a)]

pv=min(map(min,m))
ak=max(map(max,m))

def find(e,mat):
    for i in range(len(mat)):
        for j in range(len(mat[i])):
            if mat[i][j]==e:
                return [i,j]

我需要一个没有 NumPy 数组的解决方案。

我找到了最大值和最小值以及它们的索引。之后就不知道怎么办了

sort() returns 从最小数到最大数的列表。

getmatzone returns 区域。

def getmatzone(x, y, w, h, mat):
    m = []
    for y1 in mat[y:h+1]:
        m.append(y1[x:w+1])
    return m


def sort(mat):
    m = []
    for y in mat:
        for x in y:
            m.append(x) # make 1d list
    m.sort() # sort
    return m

您可以再次遍历矩阵并仅获取您找到的最小和最大坐标区间内的值。

a, b = map(int, input().split())
m = [list(map(int, input().split())) for i in range(a)]
print(m)
pv = min(map(min, m))
ak = max(map(max, m))


def find(e, mat):
    for i in range(len(mat)):
        for j in range(len(mat[i])):
            if mat[i][j] == e:
                return [i, j]


def find_matrix(min_cor, max_cor, mat):
    res = []
    min_i, min_j = min_cor
    max_i, max_j = max_cor
   #swap if max coordinates is before min 
    if(min_i > max_i):
        min_i,max_i = max_i, min_i

    if(min_j > max_j):
        min_j,max_j = max_j,min_j
    for i in range(len(mat)):
        cur_row = []
        for j in range(len(mat[i])):
            if min_i <= i <= max_i and min_j <= j <= max_j:
                cur_row.append(mat[i][j])
        if cur_row:
            res.append(cur_row)
    return res