Algorithm 最接近零[绝对值]实值序列的连续子序列之和
这是我的算法操场!我见过这个问题处理最大连续子序列的变体,但这也是另一个变体。 正式定义: 给定Algorithm 最接近零[绝对值]实值序列的连续子序列之和,algorithm,sequence,dynamic-programming,divide-and-conquer,Algorithm,Sequence,Dynamic Programming,Divide And Conquer,这是我的算法操场!我见过这个问题处理最大连续子序列的变体,但这也是另一个变体。 正式定义: 给定A[1..n]findi和j,使abs(A[i]+A[i+1]+…+A[j])最接近于零 我想知道如何获得O(n log^2n),甚至O(n log n)解决方案 计算累计总和 分类 找到差异最小的序列对 函数最小顺序(值){ var n=值。长度; //将累积和与索引一起存储。 var总和=[]; sums[0]={index:0,sum:0}; 对于(var i=1;我想你是在寻找负数和正数之间的
A[1..n]
findi
和j
,使abs(A[i]+A[i+1]+…+A[j])
最接近于零
我想知道如何获得O(n log^2n)
,甚至O(n log n)
解决方案
函数最小顺序(值){
var n=值。长度;
//将累积和与索引一起存储。
var总和=[];
sums[0]={index:0,sum:0};
对于(var i=1;我想你是在寻找负数和正数之间的最小距离,从i=j开始;当我得到答案后,你将它们与从cs站点删除的0进行比较!tanx提到!这是很棒的js代码,所以tanx!有没有其他类似使用AVL树的设计方法?!我听说这是可能的,我是说我很想知道怎么做。我不知道。如果是这样的话,实现起来会更复杂,而且在速度和内存方面也不会给你带来任何好处。
>>> leastSubsequenceSum([10, -5, 3, -4, 11, -4, 12, 20]);
[2, 3, 1]
>>> leastSubsequenceSum([5, 6, -1, -9, -2, 16, 19, 1, -4, 9]);
[0, 4, 1]
>>> leastSubsequenceSum([3, 16, 8, -10, -1, -8, -3, 10, -2, -4]);
[6, 9, 1]
[10, -5, 3, -4, 11, -4, 12, 20]
^^^^^