剑指offer:二维数组中的查找
题目:
思路:
1、二维数组的创建,以及行数和列数的求解
vector<vector>int>> array; //vector构造二维数组
int raws = array.size(); //数组的行数
int cols =array[0].size(); //数组的列数
2、
方法一:选定左下角的元素,与目标元素做对比,改变行和列,依次对比
class Solution {
public:
bool Find(int target, vector<vector<int> > array)
{
int raws=array.size();//行数
int cols=array[0].size(); //列数
if(raws==0||cols==0)
return false;
//方法一,左下角的元素
int hang=raws-1;
int lie=0;
while(hang>=0&&lie<cols)
{
if(array[hang][lie]==target)
return true;
else if(array[hang][lie]>target)
hang--;
else
lie++;
}
return false;
}
};
方法二、对二维数组的每一行,用二分法查找
二分法的实现:三个指针,low,high,mid,将目标元素与mid值做对比
方法三、直接遍历二维数组
注:主要用的解法,就是方法一。