Skip to content
XisuNyy edited this page Nov 4, 2021 · 1 revision

为什么 这leetcode 二维数组中的查找 这个题目老会报错 希望作者大大 给一点参考

class Solution {
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
        
        int row=matrix.size();
        int col=matrix[0].size();
        
        int i=0,j=col-1;//行和列

        while(i<row&&j<col&&j>=0)
        {
            int value=matrix[i][j];
            if(value>target) j--;
            else if(value<target) i++;
            else return true;
        }
        return false;
    }
};

我也尝试过 不同的写法

bool findNumberIn2DArray(int** matrix, int matrixSize, int* matrixColSize, int target){
    bool res=false;
    //对于行和列进行处理
    int array_cols=matrixSize;
    int array_rows=matrixSize;
    // 输入的参数是 数组 ,数组大小 数组的列长度 和目标的数组
    if(matrix!=NULL&&array_rows>0&&array_cols>0)
    {
        int row=0;
        int col=array_rows-1;
        //进行扫描 从第一行开始 先从第一行的最后一个开始比较
        while(row<array_rows&&col>=0)
        {
            if(matrix[row][col]==target)
            {
                res=true;
                break;
            }
            else if(matrix[row][col]>target)
            {
                col--;
            }
            else
            {
                row++;
            }
        }
    }
    return res;
}

在后面的案例中 不清楚 我和这个正确答案的区别

class Solution {
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
        int i =matrix.size()-1;
        int j=0;
        while(i>=0&&j<matrix[0].size())
        {
            if (matrix[i][j]>target) i--;
            else if(matrix[i][j]<target)j++;
            else return true;
        }
        return false;
    }
};

Clone this wiki locally