在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
public class Solution { public boolean Find(int target, int [][] array) {
//第一种方法 不是很好
int m = array.length; int n = array[0].length; for(int i = 0;i < m; i++){ for(int j = 0; j < n;j++){ if(target == array[i][j]){ return true; } } } return false;
//第二种比较好
1 public boolean Find(int target, int [][] array) { 2 int colLen = array[0].length;//获取列 3 int rowLen = array.length;//获取行 4 int row = 0;//行坐标 5 int col = colLen-1;//列坐标 6 //从右上角开始查找 7 while(row < rowLen && col >= 0){ 8 if(array[row][col] == target) 9 return true; 10 //如果目标值比当前值还要小,那么第col列所有值不符合,所以col-1 11 if(target < array[row][col]){ 12 col--; 13 continue; 14 } 15 //如果目标值比当前值还要大, 那么第row行所有值不符合,所以row+1; 16 if(target > array[row][col]){ 17 row++; 18 continue; 19 } 20 } 21 return false; 22 }