Cho ma trận, đếm số phần tử có giá trị lớn nhất cả trong hàng và cột của nó.
Ví dụ: ma trận 3x3, kết quả 2 (số 6 và 7 thỏa mãn).
Các bước giải quyết
- Tìm max mỗi hàng:
r_maxes - Tìm max mỗi cột:
c_maxes(dùng zip để chuyển vị) - Duyệt từng ô
(r,c): nếumat[r][c] == r_maxes[r] == c_maxes[c]thì đếm - Trả về số lượng
Ví dụ mã Python
class Solution:
def solve(self, matrix):
mat = matrix
trans_mat = list(zip(*matrix))
r_maxes = [max(row) for row in mat]
c_maxes = [max(t_row) for t_row in trans_mat]
a = []
for r in range(len(mat)):
for c in range(len(trans_mat)):
v = mat[r][c]
if (r_maxes[r], c_maxes[c]) == (v, v):
a.append(v)
return len(a)
ob = Solution()
matrix = [[1, 3, 2], [4, 6, 5], [1, 5, 7]]
print(ob.solve(matrix))
Đầu vào
[[1, 3, 2], [4, 6, 5], [1, 5, 7]]
Đầu ra
2