题目描述
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
样例描述
思路
技巧法 有个印象就行
- 从右上角的值开始看,大于target就去掉一列,否则去掉一行。
- 技巧性太强,右上角这个位置很有特点。
代码
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length, n = matrix[0].length;
int i = 0, j = n - 1;
while (i < m && j >= 0) {
//从右上角开始二分
int t = matrix[i][j];
if (t == target) return true;
//大于target就去掉一列
else if (t > target) {
j --;
}
//小于target就去掉一行
else i ++;
}
return false;
}
}