在很多时候,类中二维数组的维度往往无法提前知道,因此需要动态地分配空间。
使用new运算符是其中的一个解决方案,但是操作不当往往会造成内存溢出/泄漏。
使用STL的vector可以避免这个麻烦。
实现:
/*
矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,
因此从左下角开始查找,当要查找数字比左下角数字大时。右移
要查找数字比左下角数字小时,上移
*/
#include<iostream>
#include<vector>
#include<cstdlib>
using namespace std;
class Solution{
public:
bool Find(int target,vector<vector<int> >array){
int row=array.size();
int col=array[0].size();
int i,j;
for(i=row-1,j=0;i>=0&&j<col;)
{
if(target<array[i][j])
{
i--;
continue;
}
else if(target>array[i][j])
{
j++;
continue;
}
else
return true;
}
return false;
}
};
int main()
{
vector<vector<int> >array(4,vector<int>(4)); //定义一个4*4的二维数组
//给数组元素赋值
array[0][0]=1;
array[0][1]=2;
array[0][2]=3;
array[0][3]=4;
array[1][0]=2;
array[1][1]=3;
array[1][2]=6;
array[1][3]=7;
array[2][0]=3;
array[2][1]=4;
array[2][2]=7;
array[2][3]=8;
array[3][0]=5;
array[3][1]=6;
array[3][2]=9;
array[3][3]=10;
Solution s;
cout<<s.Find(9,array);
return 0;
}