最大索引差问题的数组分段错误
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_index
和 j_index
都将保留单元化。
我编写了这个 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_index
和 j_index
都将保留单元化。