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

Segmentation fault in array for max index difference problem

我编写了这个 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);
}

它不应该为 N=1 正常工作,因为在这种情况下 while(low<high) 循环将在没有一次迭代的情况下完成,并且 i_indexj_index 都将保留单元化。