题解 | #二维数组中的查找#

二维数组中的查找

https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

#include <iostream>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param target int整型 
     * @param array int整型vector<vector<>> 
     * @return bool布尔型
     */
  
    
    bool Find(int target, vector<vector<int>>& array) {
        // write code here
  
        if(array[0].size() == 0 || array.size() == 0){
            return false;
        }
        int m = array[0].size();
        int n = array.size();
        int j = m-1;
        int i = 0;
        while (i>=0 && i<n && j>=0 && j<m) {
            if(array[i][j] < target)
            {
                i++;
            }
            else if (array[i][j] > target) {
                j--;
            }
            else{
                return true;
            }
        }
        return false;
    }
};

观察可知,从矩阵右上角的元素开始,矩阵的下方元素总是大于左方元素。从这里开始搜索,实现搜索过程中的不重不漏。

时间复杂度O(n+m).

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务