欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-29 15:54:32
如图: 只能从左下角或者从右上角入手,输入的数大于当前数就往右走,小于当前的数就往上走 class Solution{ public bool Find(int target, int[][] array) { int rowCount = array.GetLength(0);//获取行的长度 i ......

如图:

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

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

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

推荐阅读