Algorithm 总和小于或等于给定';k';

Algorithm 总和小于或等于给定';k';,algorithm,data-structures,time-complexity,Algorithm,Data Structures,Time Complexity,我知道一个O(n2)soln,它能以更好的方式完成吗,因为数组中元素数量的限制很大是是的,如果所有元素都是非负的,就有一个O(n lgn)算法 定义p[i]为p[0..i]的和(我们称之为前缀和) 对于每个i:二进制搜索最大值j,使得p[j]-p[i-1]数组中的元素保证为非负?是元素为非负!!!我怀疑可能有一些技巧使用O(n)中的两个指针来做类似的事情……你已经正确地指出,子数组的数量=j-I+1。但对这种逻辑的解释是错误的。如果考虑到你所说的话,你最终会重复多次,并遗漏一些。正确的解释是:对

我知道一个O(n2)soln,它能以更好的方式完成吗,因为数组中元素数量的限制很大是是的,如果所有元素都是非负的,就有一个O(n lgn)算法

  • 定义
    p[i]
    p[0..i]
    的和(我们称之为前缀和)

  • 对于每个
    i
    :二进制搜索最大值
    j
    ,使得
    p[j]-p[i-1]数组中的元素保证为非负?是元素为非负!!!我怀疑可能有一些技巧使用O(n)中的两个指针来做类似的事情……你已经正确地指出,子数组的数量=j-I+1。但对这种逻辑的解释是错误的。如果考虑到你所说的话,你最终会重复多次,并遗漏一些。正确的解释是:对于范围[i…j],新的实例将是:[j],[j-1..j],[j-2…j],[i+1…j],[i…j]ex:k=7和lis=[1,2,3]:i=1,j=1:[1]->1i=1,j=2:[1,2]->[2],[1,2]i=1,j=3:[1,2,3]->[3],[2,3],[1,2,2,3]