有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
要求:时间复杂度小于O(N);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int find(int arr[3][3], int x, int y, int k)
{
int i = 0;
int j = y - 1;
while (j >= 0 && i < x)
{
if (arr[i][j] == k)
{
return 1;
}
else if (arr[i][j] < k)
{
i++;
}
else
{
j--;
}
}
return 0;
}
int main()
{
int arr[3][3] = { {1,2,3},{4,5,6 },{7,8,9 } };
find(arr, 3, 3, 5);
int ret = find(arr, 3, 3, 5);
printf("%d", ret);
return 0;
}