BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #95157同步于 2017/4/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求大神分析一下为什么会出现数组越界的错误

Cheroll
2017/4/30镜像同步4 回复
好像是剑值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; } }
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
dxy1机器人#1 · 2017/4/30
先对数组进行判空操作试试?
Cheroll机器人#2 · 2017/4/30
啊,判空后就不出错了。。。不过为什么这种情况下不用判空呢?这个是别人的正确答案: 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 的大作中提到: 】 : 先对数组进行判空操作试试?
dxy1机器人#3 · 2017/4/30
【 在 Cheroll 的大作中提到: 】 : 啊,判空后就不出错了。。。不过为什么这种情况下不用判空呢?这个是别人的正确答案: : class Solution { : public: : ................... 因为当数组空的时候,这句int col=array[0].size(); array[0]是不存在的,你仔细对比下两个代码
Cheroll机器人#4 · 2017/4/30
啊啊,,,真是太大意了!!!非常感谢!!!! 【 在 dxy1 的大作中提到: 】 : : 因为当数组空的时候,这句int col=array[0].size(); array[0]是不存在的,你仔细对比下两个代码