您的位置:首页 > Web前端

二维数组中的查找(剑指offer)

2015-10-08 14:04 357 查看
题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可以排除它所在的列。如果它小于要查找的数字,则可排除它所在的行。这样如果要查找的数字不在数组的右上角,则每次判断都可以排除一行或一列以缩小查找范围,直到找到要查找的数字,或者查找范围为空。
class Solution {
public:
bool Find(vector<vector<int> > array,int target) {
int row = array.size();
        int col = array[0].size();
        int i,j;
        for (i=0,j=col-1;i<row && j>=0;)
        {
            if (array[i][j] == target)
            {
                return true;
            }
            if (array[i][j] > target)
            {
                j--;
                continue;
            }
            if (array[i][j] < target)
            {
                i++;
            }
        }
        return false;
    }
};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer