在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


如图:

只能从左下角或者从右上角入手,输入的数大于当前数就往右走,小于当前的数就往上走

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; //没有找到
}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM