题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
方法一:直接一跳一跳的查找即可,我没想到
public class Solution {
public boolean Find(int target, int [][] array) {
int len=array.length, i=0;
len-=1;
while(len>=0&&i<array[0].length)
{
if(array[len][i]>target)
{
len--;
}
else if(array[len][i]<target)
{
i++;
}
else return true;
}
return false;
}
}
方法二:正常人思路,二分套二分
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int siz=array.size();
int left=0, right=siz-1, mid, ret=-1;
while(left<=right)
{
mid=(left+right)>>1;
if(array[mid].size()>0&&array[mid][0]>target) right=mid-1;
else
{
left=mid+1;
ret=mid;
}
}
if(-1==ret) return false;
if(array[ret].size()>0&&array[ret][0]==target) return true;
for(int i=0; i<=ret; i++)
{
int tmp=-1;
left=0;right=array[i].size()-1;
while(left<=right)
{
mid=(left+right)>>1;
if(array[i][mid]>target) right=mid-1;
else
{
left=mid+1;
tmp=mid;
}
}
if(tmp==-1) continue;
if(array[i][tmp]==target) return true;
}
return false;
}
};
[剑指Offer]二维数组中的查找
最新推荐文章于 2022-08-24 20:16:14 发布