判断二维数组是否包含某数
题目
已知一个整数型二维数组,行和列的数值都是递增的。现在给定数值'x',判断二维数组是否包含'x'。
方法
假设二维数组如下图排列,取二维数组右上角数值和'x'比较:(1) 如果比'x'大,则这一列就剔除;(2) 如果比'x'小,则这一行就剔除。
代码
#include <vector>
#include <stdio.h>
using namespace std;
int raws = 3;
int cols = 4;
bool find(int target, int array[][4]);
int main(int argc, char *argv[])
{
int target = 4;
int array[][4] = {{1, 3, 5, 6},{3, 4, 7, 8},{4, 5, 8, 9}};
int result = find(target, array);
printf("result is :%d ",result);
return result;
}
bool find(int target, int array[][4])
{
if(raws > 0 && cols > 0)
{
int raw = 0;
int col = cols - 1;
while((raw != raws) && (col >= 0))
{
if(array[raw][col] == target)
return true;
if(array[raw][col] > target)
col--;
if(array[raw][col] < target)
raw++;
}
}
return false;
}