1
计算来自数组的连续子数组的和数
我们给出阵列与所有一个[ 我] > 0。a [ 1 … n ]a[1…n]a[1 \ldots n]a [ i ] > 0a[i]>0a[i]>0 现在我们需要找到可以从其子数组中形成多少个不同的总和(其中,子数组是该数组的连续范围,即,对于某些j ,k的,总和是所有子数组的元素)。例如,如果一个= [ 1 ,2 ,1 ],则答案为4:我们可以形成1 ,2 ,3 ,4。a [ j … k ]a[j…k]a[j\ldots k]Ĵ ,ķj,kj,k一个= [ 1 ,2,1 ]a=[1,2,1]a=[1,2,1]1 ,2 , 3 ,41,2,3,4 1,2,3,4 我知道如何计算时间中不同总和的数量。Ø (ñ2)O(n2)O(n^2) 此外,我已经意识到这与经典问题类似,在经典问题中,我们需要找到字符串的不同子字符串的数量。我正在考虑构造后缀数组并以类似的方式(以时间)解决它的可能性。但是我还无法弄清楚如何对其进行修改以在这里工作。例如,如果我们使用后缀数组为一个= [ 1 ,2 ,1 ],我们将得到5案件代替的四个上可接受的那些。是否可以使用后缀数组来做到这一点,或者我在想错方向吗?Ø …