下面我先讲一下这道题的做题思路:
因为这个数组的自左往右,自下往上都是递增的,所以上面数字的是每一列最小的。
由此,比查找的数大的话,我们应该让行数增加(++row),比它小,我们应该让列数减一(- -col)
下面我画图给大家看一下这道题的思路
下面是java代码,但是核心代码和C语言一样,大家可以借鉴一下,如果有问题,在评论区留言,谢谢大家
public class Solution {
public boolean Find(int target, int [][] array) {
int row=array.length;
int col=array[0].length;
row=0;
while(row<array.length&&col-1>=0)
{
if(target==array[row][col-1])
return true;
else if (target<array[row][col-1])
--col;
else
++row;
}
return false;
}
}