【牛客】二维数组中的查找

题目:

二维数组中的查找_牛客题霸_牛客网 (nowcoder.com)
在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[
[1,2,8,9],
[2,4,9,12],
[4,7,10,13],
[6,8,11,15]

]

给定 target = 7,返回 true。

给定 target = 3,返回 false。

数据范围:矩阵的长宽满足 0 \le n,m \le 5000≤n,m≤500 , 矩阵中的值满足 0 \le val \le 10^90≤val≤109
进阶:空间复杂度 O(1)O(1) ,时间复杂度 O(n+m)O(n+m)

思路:

每次找右上角的值,
右上角的值有两个特点:
1、它是一行中最大的
2、它是一列中最小的
如果x小于右上角的值排除一列
如果x大于右上角的值排除一行
 

代码:

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) 
    {
        int i = 0;
        int j = array[0].size() - 1;

        while(i < array.size() && j >= 0)
        {
            int num = array[i][j];
            if(num > target)
            {
                j--;
            }
            else if(num < target)
            {
                i++;
            }
            else
            {
                return true;
            }
        }
        return false;

    }
};



猜你喜欢

转载自blog.csdn.net/holle_world_ldx/article/details/127943957