剑指offer
题目:二维数组中的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
代码:
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
bool Find(vector<vector<int> > array, int target)
{
int iRowSize = array.size();
int iColSize = array[0].size();
for(int i=iRowSize-1, j=0; i>=0 && j<iColSize;)
{
if(target == array[i][j])
{
return true;
}
if(target < array[i][j])
{
i--;
continue;
}
if(target > array[i][j])
{
j++;
continue;
}
}
return false;
}
};
int main()
{
vector<vector<int> > array(5);
for(int i=0; i<5; i++)
{
array[i].resize(5);
}
array[0] = {1,2,3,4,5};
array[1] = {6,7,8,9,10};
array[2] = {11,12,13,14,15};
array[3] = {16,17,18,19,20};
array[4] = {21,22,23,24,25};
Solution A;
cout << ((A.Find(array,26)) ? "yes" : "no") << endl;
}