mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Add files via upload
This commit is contained in:
parent
eeeb9ab48a
commit
03adefc12a
33
searches/Peak_Element_on_2D.py
Normal file
33
searches/Peak_Element_on_2D.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
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}")
|
Loading…
Reference in New Issue
Block a user