Untitled
unknown
plain_text
a year ago
1.3 kB
5
Indexable
def find_local_maximums(matrix):
rows = len(matrix)
if rows == 0:
return []
cols = len(matrix[0])
local_maximums = []
for i in range(rows):
for j in range(cols):
if matrix[i][j] == 0:
continue
size = matrix[i][j]
# Calculate the bounds of the region
start_row = max(0, i - (size - 2) // 2)
end_row = min(rows - 1, i + (size - 2) // 2)
start_col = max(0, j - (size - 2) // 2)
end_col = min(cols - 1, j + (size - 2) // 2)
is_local_max = True
# Check the region for local maximum condition
for r in range(start_row, end_row + 1):
for c in range(start_col, end_col + 1):
if matrix[r][c] >= matrix[i][j]:
is_local_max = False
break
if not is_local_max:
break
if is_local_max:
local_maximums.append([i, j])
# Sort results first by row, then by column
local_maximums.sort(key=lambda x: (x[0], x[1]))
return local_maximums
# Example usage:
matrix = [
[1, 2, 3],
[4, 5, 0],
[0, 6, 7]
]
print(find_local_maximums(matrix)) # Output: [[1, 1], [2, 2]]
Editor is loading...
Leave a Comment