返回信息流好像是剑值offer中的一道题,一个数组中每行每列的值都是递增的,现在要判断这个数组包不包含某个数值。
下面是我的代码,,,不过在线编译的时候总提示:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起。。。看了n遍了,感觉没问题啊。。。
方法是从最后一行开始查找。。。
class Solution
{
public:
bool Find(int target, vector<vector<int> > array)
{
int row=array.size()-1,col=array[0].size();
for(int i=row;i >= 0;i--)
{
if(array[i][0]>target)
continue;
for(int j=0;j<col;j++)
{
if(array[i][j]==target)
return true;
}
}
return false;
}
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #95157同步于 2017/4/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求大神分析一下为什么会出现数组越界的错误
Cheroll
2017/4/30镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
啊,判空后就不出错了。。。不过为什么这种情况下不用判空呢?这个是别人的正确答案:
class Solution {
public:
bool Find(int target, vector<vector<int> > array)
{
//int row =
for(int i = array.size() - 1; i >= 0; i--)
{
for(int j = 0; j < array[0].size(); j++)
{
if(array[i][j] > target)
{
break;
}
if(array[i][j] < target)
continue;
else
{
return true;
}
}
}
return false;
}
};
【 在 dxy1 的大作中提到: 】
: 先对数组进行判空操作试试?
【 在 Cheroll 的大作中提到: 】
: 啊,判空后就不出错了。。。不过为什么这种情况下不用判空呢?这个是别人的正确答案:
: class Solution {
: public:
: ...................
因为当数组空的时候,这句int col=array[0].size(); array[0]是不存在的,你仔细对比下两个代码
啊啊,,,真是太大意了!!!非常感谢!!!!
【 在 dxy1 的大作中提到: 】
:
: 因为当数组空的时候,这句int col=array[0].size(); array[0]是不存在的,你仔细对比下两个代码