最近找工作时发现自己的编程基础不够扎实,所以打算将自己的编程中遇到的错误放到博客上面,方便以后自己查阅之前犯过的错误,这也是我的第一篇博客哈哈哈。
题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
数组自上而下递增,自左到右递增,第一个最简单的想法肯定是遍历数组,但是这样的效率太低,更优的办法肯定是利用其中的顺序进行查找。从右下角可以向上和向左查找的话,元素都是变小,两个方向都是变小的话就无法提升效率了,因为谁更小需要进一步地进行判断,左上角也是同理的。当选左下角的时候,向上则是变小,向右则是变大,这样一来就可以区分了,右上角也是同理可选的。
下面是我的实现过程:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if(array.size()==0)
{
return false;
}
int raw=array[0].size()-1;
int column=0;
while(raw>=0 && column<=(array.size()-1))
{
if(array[column][raw]==target)
{
return true;
}
else if(target>array[column][raw])
{
column++;
}
else
{
raw--;
}
}
return false;
}
};
ps:自己在实现的过程中,犯了一个小失误,就是raw和column两者在数组下标那里调转了,emm还是挺傻的