牛客BM18. 二维数组中的查找
解题思路:
本题利用这个二维表独特的性质可以较快解出。每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。由此可以看出,如果我们以这个二维表的右上角为起点开始与 target 作比较,如果 target 比目前右上角的数值大,行下移,即 i++ ;如果 target 比目前右上角的数值小,列左移,即 j-- ,我们只要控制好i ,j 的范围,此题即可解出。
实现代码:
public class Solution {
public boolean Find(int target, int [][] array) {
int m=array.length;
int n=array[0].length;
int i=0;int j=n-1;
int flag=0;
while(i<m&&j>=0){
if(array[i][j]>target)
j--;
else if(array[i][j]<target)
i++;
else{
flag=1;
break;
}
}
return flag==1?true:false;
}
}