mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-23 01:28:26 +00:00
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
|
def find_peak_util(matrix, left, right, row_count):
|
||
|
mid_col = (left + right) // 2
|
||
|
|
||
|
max_row_index = 0
|
||
|
for i in range(row_count):
|
||
|
if matrix[i][mid_col] > matrix[max_row_index][mid_col]:
|
||
|
max_row_index = i
|
||
|
|
||
|
|
||
|
if (mid_col == 0 or matrix[max_row_index][mid_col] >= matrix[max_row_index][mid_col - 1]) and \
|
||
|
(mid_col == len(matrix[0]) - 1 or matrix[max_row_index][mid_col] >= matrix[max_row_index][mid_col + 1]):
|
||
|
return matrix[max_row_index][mid_col]
|
||
|
|
||
|
|
||
|
if mid_col > 0 and matrix[max_row_index][mid_col - 1] > matrix[max_row_index][mid_col]:
|
||
|
return find_peak_util(matrix, left, mid_col - 1, row_count)
|
||
|
|
||
|
return find_peak_util(matrix, mid_col + 1, right, row_count)
|
||
|
|
||
|
def find_peak(matrix):
|
||
|
if not matrix or not matrix[0]:
|
||
|
return None
|
||
|
return find_peak_util(matrix, 0, len(matrix[0]) - 1, len(matrix))
|
||
|
|
||
|
matrix = [
|
||
|
[10, 8, 10, 10],
|
||
|
[14, 13, 12, 11],
|
||
|
[15, 9, 11, 21],
|
||
|
[16, 17, 19, 20]
|
||
|
]
|
||
|
|
||
|
peak = find_peak(matrix)
|
||
|
print(f"Peak element is: {peak}")
|