要求:时间复杂度小于O(N)
如:
1 2 3
4 5 6
7 8 9
在这个数组中找7,找到则返回1,没找到则返回0
int Findnum(int arr[3][3], int key, int rows, int cols)
{
int row = 0;//右上角下标
int col = cols-1;
while ((row >= 0) && (col <= cols-1))
{
if (key < arr[row][col])
{
col--;
}
if (key > arr[row][col])
{
row++;
}
if (key == arr[row][col])
{
return 1;
}
}
return 0;
}
int main()
{
int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 10};
int key = 9;
int ret = Findnum(arr, key, 3, 3);
if (ret == 0)
{
printf("no\n");
}
else if (ret == 1)
{
printf("yes\n");
}
system("pause\n");
return 0;
}