当前位置: 移动技术网 > IT编程>开发语言>.net > 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

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

2019年01月30日  | 移动技术网IT编程  | 我要评论

黄梅一中网,迅雷登陆超时,黑帮高中国语

如图:

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网