使用vector时获取SIGABRT


int maxOccured(int L[], int R[], int n, int maxx){

// int v[maxx]={0};
vector<int> v(maxx);
for(int i=0; i<n; i++){
v[L[i]]+=1;
v[R[i]+1]-=1;
}
int max=v[0];
int res=0;
for(int i=1; i<maxx; i++){
v[i]+=v[i-1];
if(v[i]>max){
max=v[i];
res=i;
}
}
return res;

}

在我的代码中,如果我使用相同大小的数组,它可以正常工作,但在使用向量时,我会得到的错误

Abort signal from abort(3) (SIGABRT)

以下是一些你应该绝对确定的事情:

  1. n<=max(避免运行时出现越界错误(
  2. 0<=L[i]<n和0<=R[i]+1<对于从0到n-1的i的所有值(条件1被满足(。(再次避免运行时出现越界错误(
  3. maxx不太大(大约是10^5或10^6(,否则你的向量将没有足够的存储空间来存储它的元素,你的程序将崩溃

最新更新