杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在

来源:互联网 发布:linux卸载oracle11g 编辑:程序博客网 时间:2024/05/21 15:49

要求:时间复杂度小于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;}

这里写图片描述

阅读全文
1 0
原创粉丝点击