美文网首页
剑指offer 4# 表中找数

剑指offer 4# 表中找数

作者: 再凌 | 来源:发表于2020-04-28 18:41 被阅读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;
    
}


相关文章

网友评论

      本文标题:剑指offer 4# 表中找数

      本文链接:https://www.haomeiwen.com/subject/htmbwhtx.html