【C++牛客网刷题】--01二维数组的查找

Task:

【C++牛客网刷题】--01二维数组的查找_第1张图片

思路:

对于一个二维且顺序是排列好的数组,给定了目标输入Target
(1)把这个数字和二维数组最右上角的那个数,记为m0,比较,
如果Target > m0;那么说明目标数肯定不在当前行,那么当前行就不找了,二维数组第一行就不要了,从下一行再开始++i;
如果Target < m0;那么说明目标数肯定不在当前列,这里是最后一列,所以整个二维数组的这一列就不要了,再冲前一列开始–j;
(2)重复(1)中的过程,最后就能锁定到我们的目标数,
如果有的话那就返回True;
没有的话就返回False了!

代码:

class Solution {
public:
    bool Find(int target, vector > array) {
        int rows = array.size();
        int cols = array[0].size();
        if(!array.empty() && rows > 0 && cols > 0){
            int row = 0;
            int col = cols -1;
            while( row < rows && col >= 0){
                if(array[row][col] == target){
                    return true;
                }
                else if(array[row][col] > target){
                    --col;
                }
                else{
                    ++row;
                }
            }
        }
        return false;
    }
};

提交结果:

【C++牛客网刷题】--01二维数组的查找_第2张图片

你可能感兴趣的:(C/C++学习,牛客)