public static int maxOfColumn(int [][]MATRIX, int n, int m, int mid){
int max = 0;
int index = 0;
for(int i=0; i<=n-1; i++){
if(MATRIX[i][mid] > max) {
max = MATRIX[i][mid];
index = i;
}
}
return index;
}
public static int[] findPeakGrid(int [][]MATRIX){
int n = MATRIX.length;
int m = MATRIX[0].length;
int low = 0;
int high = m-1;
while(low <= high){
int mid = (low+high)/2;
int row = maxOfColumn(MATRIX, n, m, mid);
int left = mid - 1 >= 0 ? MATRIX[row][mid-1] : -1;
int right = mid + 1 < m ? MATRIX[row][mid+1] : -1;
if(left < MATRIX[row][mid] && right < MATRIX[row][mid]){
return new int[]{row, mid};
}
else if(left > MATRIX[row][mid]){
high = mid - 1;
}
else {
low = mid + 1;
}
}
return new int[]{-1,-1};
}