二维数组的查找

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


一般的想法是从最左上端(最小)开始找,但是有两个方向都是增大的,不好判断到底从哪个方向走,但是从斜对角线考虑的话就方便多了,若比当前小,则向左查找;若比当前大,向下查找。

对于矩阵:1    2    3

                4    5    8

                8    9   11

查找9,先从3出发,由于3<9,向下查找,下一个元素为8,;8<9,下一个元素为11;11>9,向左查找,下一个元素为9,9=9,找到了该元素。否则,直至不能再向下或者向左移动。

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

阅读更多
下一篇替换空格
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭