关注
剑指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
相关推荐
11-09 10:50
广东理工学院 C++ 点赞 评论 收藏
分享
11-09 16:35
泰山学院 嵌入式软件开发 点赞 评论 收藏
分享
牛客热帖
正在热议
# 晒一晒我的offer #
9708898次浏览 104833人参与
# 机械只有读研才有出路吗? #
7994次浏览 103人参与
# 北方华创开奖 #
21157次浏览 244人参与
# 地方国企笔面经互助 #
2018次浏览 6人参与
# 滴滴求职进展汇总 #
78958次浏览 690人参与
# 考研失败就一定是坏事吗? #
36371次浏览 355人参与
# 机械人,签完三方你在忙什么? #
23129次浏览 119人参与
# 总结:哪家公司面试体验感最差 #
23627次浏览 116人参与
# 机械应届生薪资要多少才合适? #
11831次浏览 56人参与
# 学历or实习经历,哪个更重要 #
39138次浏览 281人参与
# 选完offer后,你后悔学本专业吗 #
6850次浏览 44人参与
# 查收我的offer竞争力报告 #
13534次浏览 191人参与
# 机械人怎么评价今年的比亚迪 #
40963次浏览 141人参与
# 应届生被毁约被毁意向了怎么办 #
24335次浏览 231人参与
# 00后45度躺现状 #
34331次浏览 297人参与
# 没有合适的工作,你会先找个干着,还是考公考研 #
35401次浏览 392人参与
# 秋招OC许愿 #
224327次浏览 1855人参与
# 如果能重来,就业or读研你选哪个? #
45472次浏览 337人参与
# 大疆求职进展汇总 #
402815次浏览 2869人参与
# 实习,投递多份简历没人回复怎么办 #
2382618次浏览 34183人参与
# 双非能在秋招上岸吗? #
99577次浏览 772人参与