最大索引差异问题的数组分割错误

时间:2020-07-05 09:50:45

标签: c++ arrays vector indexing segmentation-fault

我编写了这个c ++函数,以便在给定测试用例的情况下arr [i] <= arr [j]可以很好地找到数组中的最大索引差,但是当我提交代码时,它显示了分段错误

约束:- 1≤T≤1000 1≤N≤10 ^ 7 0≤A [i]≤10 ^ 18

    long long maxIndexDiff(int  arr[], int n) 
{ 
    
    // Your code here
    vector<long long  > num;
    for(long i=0;i<n;i++)
    {
        num.push_back(arr[i]);
    }
    long high =n-1;
    long low=0;
    long i_index,j_index;
    while(low<high)
    {
        if(num[high]>=num[low])
        {
            i_index=low;
            j_index=high;
            break;
        }
         
        low++;
        high--;
    }
    
   for(long i=j_index;i<n;i++)
   {
       if(num[i]>=num[i_index])
       j_index=i;
   }
   
   for(long i=i_index;i>=0;i--)
   {
       if(num[i]<=num[j_index])
       i_index=i;
   }
    
    return (j_index-i_index);
}

1 个答案:

答案 0 :(得分:0)

它不适用于N=1,因为在这种情况下,while(low<high)循环将在没有一次迭代的情况下完成,并且i_indexj_index都将保持统一。