如图:
只能从左下角或者从右上角入手,输入的数大于当前数就往右走,小于当前的数就往上走
class Solution
{
public bool Find(int target, int[][] array)
{
int rowCount = array.GetLength(0);//获取行的长度
int colCount = array[0].Length;//获取列的长度 说“每个一维数组的长度相同” 所以取哪一个一维数组的长度都无所谓
int num = 0;//这里是从左下角下手的,初始化为第一个
for (int i = rowCount - 1; i >= 0 && num < colCount;)//这里num < colCount是为了防止数组越界
{
if (array[i][num] == target) //相等就返回true 找到
{
return true;
}
if (target > array[i][num])//如果输入的数大于当前数就往右走下一个 num++ 进入下一个循环
{
num++;
continue;
}
if (target < array[i][num])//如果输入的数小于当前数就往上走i-- ,num不变,进入下一个循环
{
i--;
continue;
}
}
return false; //没有找到
}
}