这道题题目要求很简单,说白了就是二维数组的二分查找,代码如下
import java.util.Random;
/**
* Created by zhangwd4 on 2017/11/23.
*/
public class LeetCode74 {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix == null)
return false;
int row = matrix.length;
if (row == 0)
return false;
int col = matrix[0].length;
if (col == 0)
return false;
int start = 0, end = row * col - 1;
while (start <= end) {
int mid = (start + end) / 2;
int midValue = matrix[mid / col][mid % col]; //这里表示第x行,第y个。
if (midValue == target) {
return true;
} else if (midValue < target) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return false;
}
public static void main(String args[]) {
int n = 0;
int[][] intss = new int[3][3];
for (int i = 0; i < intss.length; i++) {
for (int j = 0; j < intss[0].length; j++) {
n += new Random().nextInt(5) + 1;
intss[i][j] = n;
}
}
for (int i = 0; i < intss.length; i++) {
for (int j = 0; j < intss[0].length; j++) {
System.out.print(intss[i][j] + "-");
}
System.out.println();
}
boolean b = new LeetCode74().searchMatrix(intss, 4);
System.out.println(b);
}
}