关注
剑指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
相关推荐
查看5道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习日记 #
4136193次浏览 33137人参与
# 你认为小厂实习有用吗? #
151821次浏览 793人参与
# 第3届现代汽车Code Faster急速编程挑战赛 #
7899次浏览 329人参与
# 为了找工作你投递了多少公司? #
119961次浏览 762人参与
# 机械人的offer怎么选 #
296402次浏览 1285人参与
# 实习生的生存小技巧 #
41765次浏览 361人参与
# 实习返校后,你的精神状态是__? #
47350次浏览 170人参与
# 你最近因为什么迷茫? #
106428次浏览 975人参与
# 我的租房踩坑经历 #
229955次浏览 1285人参与
# 通信硬件薪资爆料 #
1349477次浏览 7307人参与
# 牛友的春节生活 #
134123次浏览 838人参与
# 如果能重来,就业or读研你选哪个? #
331986次浏览 2843人参与
# 工作不开心辞职是唯一出路吗 #
20685次浏览 63人参与
# 牛客AI体验站 #
32972次浏览 447人参与
# 为什么国企只招应届生 #
271825次浏览 1347人参与
# 顺丰求职进展汇总 #
91607次浏览 372人参与
# 你觉得什么岗位会被AI替代 #
68691次浏览 401人参与
# 机械人求职现状 #
45556次浏览 335人参与
# 求职遇到的搞笑事件 #
209310次浏览 1081人参与
# 你觉得机械有必要实习吗 #
92172次浏览 543人参与
# 体制内上岸心路历程 #
42207次浏览 245人参与