关注
剑指offer二维数组中的查找,题目链接如下
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqId=11154&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
class Solution
{
public:
bool Find(vector<vector<int> > array,int target)
{
bool found = false;
if(!array.empty())
{
int h = array.size();
int w = array[0].size();
if((target>array[h-1][w-1])||(target<array[0][0]))
return found;
int i = 0, j = w-1;
while((j>=0)&&(i<h))
{ if(array[i][j]==target)
{
found = true;
break;
}
else if(array[i][j]>target)
j--;
else
i++;
}
}
return found;
}
};
问题,提交的代码有段错误。
(在本机的GCC GNU 编译器可以通过)
1.猜想可能是,没有考虑数组为空的case。
添加相应的代码以后还是出现了段错误的问题。
2.猜想可能是数组越界
反复查看代码,没有看出来在数组宽和高
3.尝试提交代码的一部分,从答案错误一直提交到段错误。
出现多错误问题的代码锁定在这一部分
while((j>=0)&&(i<h))
{
if(array[i][j]==target) {
found = true;
break;
} else if(array[i][j]>target)
j--;
else
i++;
}
4.修改代码。发现如下情况
当把while循环里的内容改成
while(i<h&&j>=0)
{
bool ife = (array[i][j]==target);
i++;
}
或者
while(i<h&&j>=0)
{
bool ife = (array[i][j]==target);
j--;
}
都只是出现答案错误
可是当改变部分如下的代码提交时出现段错误
while(i<h&&j>=0)
{
if(target==array[i][j])
{
return true;
}
i++;
}
不清楚为什么一添加了return语句或者用一个变量保存的false值改变成true值就会出现段错误。
写break语句也只是答案错误。
提交了50多遍了,测了一个早上。暂时不清楚也找不到问题在哪。
管理员有空帮忙看看这个问题呀
查看原帖
点赞 1
相关推荐
牛客热帖
更多
正在热议
更多
# 有深度的简历长什么样? #
7190次浏览 144人参与
# 实习,不懂就问 #
146650次浏览 1306人参与
# 去年的flag与今年的小目标 #
2822次浏览 85人参与
# 哪些公司在招寒假实习? #
2596次浏览 34人参与
# 26年哪些行业会变好/更差 #
3656次浏览 87人参与
# 卷__卷不过你们,只能卷__了 #
1946次浏览 42人参与
# 你都用AI做什么 #
2726次浏览 74人参与
# 写论文的崩溃时刻 #
1670次浏览 44人参与
# 实习学到最有价值的工作习惯 #
54119次浏览 433人参与
# 一人分享一道面试手撕题 #
9765次浏览 497人参与
# 入职第一天 #
4684次浏览 62人参与
# 你不能接受的企业文化有哪些 #
3303次浏览 62人参与
# uu们,春招你还来吗? #
39423次浏览 232人参与
# 应届生应该先就业还是先择业 #
161274次浏览 813人参与
# AI了,我在打一种很新的工 #
125660次浏览 1304人参与
# 听到哪句话就代表面试稳了or挂了? #
240658次浏览 1681人参与
# 月薪多少能在一线城市生存 #
127969次浏览 882人参与
# 秋招你被哪家公司挂了? #
1001124次浏览 7696人参与
# 考研人,我有话说 #
159511次浏览 1225人参与
# 你的国庆怎么过 #
109479次浏览 764人参与
SHEIN希音公司福利 292人发布

