package com.interview.books.leetcodeoj;
/**
* Created_By: stefanie
* Date: 14-12-23
* Time: 下午2:54
*/
public class LOJ74_Search2DMatrix {
//do binary searching in range [0, rows * cols - 1];
//while(low <= high) do search
//convert mid into (row, col) and check the value match. row = mid / cols, and col = min % cols.
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix.length == 0) return false;
int rows = matrix.length;
int cols = matrix[0].length;
int low = 0;
int high = rows * cols - 1;
while(low <= high){
int mid = low + (high - low)/2;
int row = mid / cols;
int col = mid % cols;
if(matrix[row][col] == target) return true;
else if(target < matrix[row][col]) high = mid - 1;
else low = mid + 1;
}
return false;
}
}