题目描述:
在一个二维数组中,每一个行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1 | 2 | 8 | 9 |
2 | 4 | 8 | 12 |
4 | 7 | 10 | 13 |
6 | 8 | 11 | 15 |
思路:从右上角开始,若小,向下走,删除一行;若大,向左走,删除一列。
/*
*二维数组由上到下,由左到右递增的规律,那么选右上角或是左下角元素a[row][col]与target比较,
*当 target小于元素a[row][col]时,那么target必在元素所在行的左侧即col--
*当 target大于元素a[row][col]时,那么target必在元素所在行的下侧即row++
*/
public class Solution{
public boolean Find(int[][] array, int target){
int row = 0;
int col = array[0].length - 1;
while(row <= array.length - 1 && col >= 0){
if(target == array[row][col]){
return true;
}
else if(target > array[row][col]){
row++;
}else{
col--;
}
}
}
return false;
}