BM18-二维数组中的查找

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]
]
给定 target = 7,返回 true。
给定 target = 3,返回 false。

数据范围:矩阵的长宽满足 0≤n, m≤500 , 矩阵中的值满足 0≤val≤10^90

进阶:空间复杂度 O(1) ,时间复杂度 O(n+m)

# 示例1
输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值:true
说明:
存在7,返回true   

# 示例2
输入:1,[[2]]
返回值:false

# 示例3
输入:3,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值:false
说明:不存在3,返回false 
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param target int整型 
 * @param array int整型二维数组 
 * @param arrayRowLen int array数组行数
 * @param arrayColLen int* array数组列数
 * @return bool布尔型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) {
    // write code here
    int iRow = 0;
    int iCol = 0;
    bool bIsFind = false;
    if (NULL == array)
        return false;
    iCol = *arrayColLen - 1;
    iRow = 0;
    while (iCol >= 0 && iRow < arrayRowLen)
    {
        if (target == array[iRow][iCol])
        {
            bIsFind = true;
            break;
        }
        else if (target <= array[iRow][iCol])
        {
            iCol--;
        }
        else{
            iRow++;
        }
    }
    return bIsFind;
} 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容