C++ Codibility MaxDistance单调,什么';我的解决方案有什么问题吗

C++ Codibility MaxDistance单调,什么';我的解决方案有什么问题吗,c++,algorithm,C++,Algorithm,问题: 给出了一个由N个整数组成的非空零索引数组。 单调对是一对整数(P,Q),因此0≤ P≤ Q结果){ 结果=最大-最小值; } 闵--; } max++; } 返回结果; } 我的结果是这样的,我上次考试的答案有什么问题 如果您有: 0 1 2 3 4 5 31 2 10 11 12 30 您的算法输出3,但正确答案是4=5-1 这是因为您的min在内部while循环的第一次完整运行时变为-1,因此这对(1,5)将永远没有机会被检查,max在进入嵌套whiles时从4开始 请注

问题:

给出了一个由N个整数组成的非空零索引数组。 单调对是一对整数(P,Q),因此0≤ P≤ Q 目标是找到索引相距最远的单调对。更准确地说,我们应该最大化Q值− P.只要找到距离就足够了

例如,考虑数组A这样:

A[0] = 5
A[1] = 3
A[2] = 6
A[3] = 3
A[4] = 4
A[5] = 2
有十一个单调对:(0,0),(0,2),(1,1),(1,2),(1,3),(1,4),(2,2),(3,3),(3,4),(4,4),(5,5)。最大距离为3,在一对(1,4)中

编写一个函数:

整数解(向量&A)

给定一个由N个整数组成的非空零索引数组,返回任何单调对中的最大距离

例如,假设:

A[0] = 5
A[1] = 3
A[2] = 6
A[3] = 3
A[4] = 4
A[5] = 2
函数应该返回3,如上所述

假设:

N是[1..300000]范围内的整数; 数组A的每个元素都是范围内的整数[−100000000..100000000]

复杂性: 期望最坏情况时间复杂度为O(N); 预计最坏情况下的空间复杂度为O(N),超出输入存储空间(不计算输入参数所需的存储空间)。 可以修改输入数组的元素

以下是我的解决方案:

int解决方案(向量&A){
长整数结果;
long int max=A.size()-1;
长整型最小值=0;
而(A.at(max)=0){
如果(A.at(max)>=A.at(min)&&max-min>结果){
结果=最大-最小值;
}
闵--;
}
max++;
}
返回结果;
}
我的结果是这样的,我上次考试的答案有什么问题

如果您有:

0  1 2  3  4  5
31 2 10 11 12 30
您的算法输出
3
,但正确答案是
4=5-1

这是因为您的
min
在内部while循环的第一次完整运行时变为-1,因此这对
(1,5)
将永远没有机会被检查,
max
在进入嵌套whiles时从
4开始

请注意,当您使用
O(1)
时,问题描述需要额外的存储空间。我认为用
O(1)
额外存储和
O(n)
时间来解决这个问题是不可能的


我建议你重新考虑你的方法。如果你放弃,有一个正式的解决方案。

也许你已经知道了,但可能是某个地方的数字溢出。@Simon我用了
long int
。那么就用long-long。请将问题本身添加到问题的正文中,不要依赖链接(这些链接可能会消失)@amit question补充道。
0  1 2  3  4  5
31 2 10 11 12 30