在牛客网上做题。不知道为什么加上
if (array[i][0]>target)break;这句代码之后会显示段错误??
bool Find(int target, vector<vector<int> > array)
{
for(int i=0;i<array.size();i++)
{
if (array[i][0]>target)break;//为什么加上这句代码之后显示段错误?
for(int j=0;j<array[i].size();j++)
{
if (array[i][j]==target)return true;
}
}
return false;
}
if (array[i][0]>target) break;
if (array[i][j]==target) return true;
请在break 和return前加上空格
if (array[i][0]>target)break;这句出现错误说明引用了违法内存,也就是array中没有指定索引的元素,鉴于你前边用了循环array.size()
说明array[i]是正常的,但是array[i]可能一个元素都没有,所以直接array[i][0]直接这样引用会引发段错误,你可以输出一下array[i].size()试试,看看是不是0
1.要么判断一下array[i].size()是不是大于0
2.将你的if移到第二个for循环里面去
确定你的array[i][0]访问有效??