Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 一种统计窗口限制符号修改的在线算法_Algorithm_Optimization_Time Series - Fatal编程技术网

Algorithm 一种统计窗口限制符号修改的在线算法

Algorithm 一种统计窗口限制符号修改的在线算法,algorithm,optimization,time-series,Algorithm,Optimization,Time Series,我试图想出一个O(n)算法,该算法实现以下功能:给定数据(长度n)由-1、0和1,以及一个参数L,返回数据中每个元素从负到正或从正到负的“开关”数,在最后的L元素中 例如,如果n=10和L=3,则以下输入: 0, 1, 1, -1, 0, 1, 0, -1, 1, -1 应返回以下输出: 0, 0, 0, 1, 1, 1, 0, 1, 1, 2 下面是一个简单的Python代码,它在O(n*L)中实现了这一点(我认为): [-1,0,1]也应该被计算吗?是的,这也算1。在帖子中编辑。 imp

我试图想出一个
O(n)
算法,该算法实现以下功能:给定数据(长度
n
)由
-1
0
1
,以及一个参数
L
,返回数据中每个元素从负到正或从正到负的“开关”数,在最后的
L
元素中

例如,如果
n=10
L=3
,则以下输入:

0, 1, 1, -1, 0, 1, 0, -1, 1, -1
应返回以下输出:

0, 0, 0, 1, 1, 1, 0, 1, 1, 2
下面是一个简单的Python代码,它在
O(n*L)
中实现了这一点(我认为):


[-1,0,1]也应该被计算吗?是的,这也算1。在帖子中编辑。
import collections as col

def mods(data):
    d = col.deque(maxlen=3)
    for elm in data:
        d.append(elm)
        state = 0
        mods = 0
        for e in d:
            if state * e == -1:
                mods += 1
            if e:
                state = e
        yield mods