Find a Peak Element II LeetCode solution in C++

1
class Solution {
2
public:
3
int maxEl(vector<vector<int>> &mat, int n, int m, int col) {
4
int maxi = -1;
5
int ind = -1;
6
for (int i = 0; i < n; i++) {
7
if (mat[i][col] > maxi) {
8
maxi = mat[i][col];
9
ind = i;
10
}
11
}
12
return ind;
13
}
14
vector<int> findPeakGrid(vector<vector<int>> &mat) {
15
int n = mat.size();
16
int m = mat[0].size();
17
int low = 0;
18
int high = m - 1;
19
while (low <= high) {
20
int mid = (low + high) / 2;
21
int row = maxEl(mat, n, m, mid);
22
int left = mid - 1 >= 0 ? mat[row][mid - 1] : -1;
23
int right = mid + 1 < m ? mat[row][mid + 1] : -1;
24
if (mat[row][mid] > left && mat[row][mid] > right)
25
return {row, mid};
26
else if (mat[row][mid] < left)
27
high = mid - 1;
28
else
29
low = mid + 1;
30
}
31
return {-1, -1};
32
}
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0