剑指offer 4# 表中找数

2020-04-28  本文已影响0人  再凌

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解法很巧妙的一道题. 从左下角或右上角出发. 例如从左下角开始, 他的右边一定比他大, 他的上面一定比他小, 因此可以通过逐次移动行或列的方法寻找. 时间复杂度为O(n)

最讨厌的是...题目没有说matrixSize代表行数..我还以为是总元素数,尼玛调试了半天!



bool findNumberIn2DArray(int** matrix, int matrixSize, int* matrixColSize, int target){

    if(matrixSize == 0)return false;

    int i = matrixSize-1;
    int j = 0;
    while(i>=0 && (j < (*matrixColSize)))
    {
        if(matrix[i][j]>target) i--;
        else if(matrix[i][j]< target ) j++;
        else return true;
    }

    return false;
    
}


上一篇 下一篇

猜你喜欢

热点阅读