Find a Peak Element II LeetCode solution in Python

1
class Solution:
2
def findPeakGrid(self, mat: List[List[int]]) -> List[int]:
3
m, n = len(mat), len(mat[0])
4
l, r = 0, n
5
while l <= r:
6
mid = (l + r) // 2
7
cur_max, left = 0, False
8
for i in range(m):
9
if i > 0 and mat[i - 1][mid] >= mat[i][mid]:
10
continue
11
if i + 1 < m and mat[i + 1][mid] >= mat[i][mid]:
12
continue
13
if mid + 1 < n and mat[i][mid + 1] >= mat[i][mid]:
14
cur_max, left = mat[i][mid], not mat[i][mid] > cur_max
15
continue
16
if mid > 0 and mat[i][mid - 1] >= mat[i][mid]:
17
cur_max, left = mat[i][mid], mat[i][mid] > cur_max
18
continue
19
return [i, mid]
20
if left:
21
r = mid - 1
22
else:
23
l = mid + 1
24
return []

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0