public class ArraySearch {
public static boolean find(int target,int [][] matrix){
if(matrix==null||matrix.length==0||matrix[0].length==0) {
return false;
}
int rows = matrix.length,cols = matrix[0].length;//找到行数和列数
int r = 0,c = cols-1;//右上角开始寻找,如果从左上角开始寻找的话,那么寻找会很困难,当小于target的时候该向右还是向下走呢?得做多次判断,代码会很复杂。
while (r<rows-1&&c>=0) {//这里注意c>=o,有等于号
if (target == matrix[r][c]) {
return true;
}
if (target > matrix[r][c]) {
r++;
} else {
c--;
}
}
return false;
}
public static void main(String[] args) {
int a[][]= { {1, 4, 7, 11, 15},{2, 5, 8, 12, 19}, {3, 6, 9, 16, 22}, {10, 13, 14, 17, 24},{18, 21, 23, 26, 30} };
boolean b=ArraySearch.find(300,a);
System.out.println(b);
}
}
二维数组查找
最新推荐文章于 2023-02-26 18:17:57 发布