剑指Offer:二维数组中的查找

来源:互联网 发布:一个java多线程代码 编辑:程序博客网 时间:2024/05/03 14:36

二维数组中的查找


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


我觉得这是暴力解法,先留着吧,等过段时间看能不能自己改一波,不知到这是怎么AC的。


class Solution {public:    bool Find(vector<vector<int> > array,int target) {        if(array.empty())   return false;        int pre=0,back=1;        int sz=array.size();        for(int i=0;i<sz;++i){            int sz0=array[i].size();            for(int j=0;j<sz0&&array[i][j]<=target;++j){               if(array[i][j]==target)  return true;            }        }        return false;    }};

2016.9.8更新

对于从右上角(或左下角)开始带有排除性的解决,可以快很多。


class Solution {public:    bool Find(vector<vector<int> > array,int target) {        if(array.empty())   return false;        int h=array.size();        if(array[0].empty())    return false;        int w=array[0].size();        for(int j=0,i=w-1;j<h;++j){            for(;i>=0;--i){                if(array[j][i]<target){                    break;                }                else if(array[j][i]==target){                    return true;                }            }            if(i==-1){                return false;            }        }        return false;    }};
0 0
原创粉丝点击