整形二维数组中,每一行从左到右递增,每一列从上到下递增。
判断数组中是否含有该整数。
**思路: 从右上角开始查找,带查找的数字如果小于右上角的数,说明要查找的数字不在当前列,列数查找范围缩小,如果大于右上角的数,行数查找范围缩小。
C++**
#include <iostream>
bool findNumber(int arr[][3], int rows, int columns, int num)
{
if (arr == NULL || rows <= 0 || columns <=0) {
return false;
}
int i = 0;
int j = columns -1;
while (i < rows && j >= 0) {
if (arr[i][j] == num) {
return true;
} else if (arr[i][j] < num) {
i++;
} else {
j--;
}
}
return false;
}
int main(int argc, const char * argv[]) {
std::cout << "Hello, World!\n";
int arr[3][3] = {1,2,3,4,5,6,7,8,9};
bool res1 = findNumber(arr,3,3,5);
bool res2 = findNumber(arr,3,3,10);
std::cout<<res1<<std::endl;
std::cout<<res2<<std::endl;
return 0;
}