题目:74. Search a 2D Matrix(https://leetcode.com/problems/search-a-2d-matrix/description/)
解法:
将二维数组看成一维数组,元素的坐标可以计算出来。此解法使用二分查找。
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int height = matrix.length;
if(height == 0) { // in case []
return false;
}
int width = matrix[0].length;
if(width == 0) { // in case [[]]
return false;
}
int from = 0;
int to = height * width - 1;
// loop until only two elements left
while (to - from > 1) {
int mid = (from + to) >> 1;
if (matrix[mid / width][mid % width] < target) {
from = mid;
} else {
to = mid;
}
}
if (from == to) {
return matrix[to / width][to % width] == target;
} else {
return matrix[to / width][to % width] == target || matrix[from / width][from % width] == target;
}
}
}