搜索二维矩阵 II
题目链接:搜索二维矩阵 II
思路:
由于四级考试耽搁了两天更新,继续坚持。
- 本题给出的矩阵有横向数字增大,纵向数字增大的特征,那么根据这个特征去寻找最佳答案。
- 我觉得还是很难想到的,我们从第一行的最右边数字进行搜索,如果相等则return true,若target大于该数字,则舍弃比该数小的数字,即可以舍掉当前所在的行,如果小于该数字,则舍掉该数所在的列
- 具体的舍弃行列操作可以利用下标控制
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null||matrix.length==0||matrix[0].length==0) {
return false;
}
if(target<matrix[0][0]||target>matrix[matrix.length-1][matrix[0].length-1]) {
return false;
}
return searchMatrix(matrix,0,matrix[0].length-1,target);
}
public boolean searchMatrix(int[][] matrix,int row,int col,int target) {
while(row<=matrix.length-1&&col>=0) {
if(target==matrix[row][col]) {
return true;
}else if(target>matrix[row][col]) {
//切除行
++row;
}else {
--col;
}
}
return false;
}