题解 | 二维数组中的查找

二维数组中的查找

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param target int整型 
     * @param array int整型vector<vector<>> 
     * @return bool布尔型
     */
    bool Find(int target, vector<vector<int> >& array) {
        int row = array[0].size();
        int col = array.size();
        
        int y = row - 1;
        int x = 0;

        while( y >= 0 && x < col){
            int tmp = array[x][y];
            if(tmp > target) y--;
            else if(tmp < target) x ++;
            else return true;
        }
        return false;
    }
};

全部评论
对于行来说从右往左,对于列来说从后往下,这样可以保证搜索顺序区间不会遗漏 原理是这样能够保证更新的时候y不会增加,因为上一行都大于target,下一行肯定也会大,因此y只需要减少,是单调的 算法的时间复杂度是o(row)
点赞 回复 分享
发布于 03-31 20:50 上海

相关推荐

零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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