Search for a command to run...
Current step
Find a peak element in the matrix. A peak element is strictly greater than its neighbors. We use binary search on columns.
Binary Search on Columns
1class Solution {2 maxElement(arr, col) {3 let n = arr.length;4 let max_val = Number.MIN_SAFE_INTEGER;5 let index = -1;6 7 for (let i = 0; i < n; i++) {8 if (arr[i][col] > max_val) {9 max_val = arr[i][col];10 index = i;11 }12 }13 return index;14 }15 16 findPeakGrid(arr) {17 let n = arr.length; 18 let m = arr[0].length; 19 20 let low = 0; 21 let high = m - 1; 22 23 while (low <= high) {24 let mid = Math.floor((low + high) / 2); 25 26 let row = this.maxElement(arr, mid);27 28 let left = mid - 1 >= 0 ? arr[row][mid - 1] : Number.MIN_SAFE_INTEGER;29 let right = mid + 1 < m ? arr[row][mid + 1] : Number.MIN_SAFE_INTEGER;30 31 if (arr[row][mid] > left && arr[row][mid] > right) {32 return [row, mid]; 33 } 34 else if (left > arr[row][mid]) {35 high = mid - 1; 36 } 37 else {38 low = mid + 1;39 }40 }41 42 return [-1, -1]; 43 }44}