我编写了这个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);
}
答案 0 :(得分:0)
它不适用于N=1
,因为在这种情况下,while(low<high)
循环将在没有一次迭代的情况下完成,并且i_index
和j_index
都将保持统一。