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