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