题目

图片说明

思路

该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。
考察二分查找

Code

class Solution {
public:
    //大于target的数在其下边,小于target的数在其左边
    bool Find(int target, vector<vector<int> > array) {
        int row = 0, col = array[0].size()-1;
        while(row < array.size() && col >= 0)        //循环终止条件
        {
            if(target == array[row][col])
            {
                return true;
            }
            else if(target > array[row][col])
            {
                row++;
            }
            else if(target < array[row][col])
            {
                col--;
            }
        }
        return false;        
    }
};