小编dan*_*dan的帖子

有限制的长度L的子序列的最大和

给定一个正整数数组。如何找到L具有max和的长度的子序列,该子序列的两个相邻元素之间的距离不超过K

我有以下解决方案,但不知道如何考虑长度L。

1 <= N <= 100000,1 <= L <= 200,1 <= K <= N

f [i]包含以i结尾的子序列的最大和。

for i in range(K, N)
    f[i] = INT_MIN
    for j in range(1, K+1)
        f[i] = max(f[i], f[i-j] + a[i])
return max(f)
Run Code Online (Sandbox Code Playgroud)

python algorithm dynamic-programming

8
推荐指数
2
解决办法
458
查看次数

如何通过快速查找来维护双端队列?

我需要在 python 中构建一个循环缓冲区作为双端队列,并进行高效搜索(不是 O(n) el in deque,而是像 set() 中那样的 O(1) )

from collections import deque 
deque = deque(maxlen=10) # in my case maxlen=1000
for i in range(20):
    deque.append(i)
deque 
Out[1]: deque([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
10 in deque # but it takes O(n), I need O(1)
Out[1]: True
Run Code Online (Sandbox Code Playgroud)

我想我需要维护一个单独的字典来查找,并在双端队列满后从中删除,但不明白如何做。我不需要从双端队列的中间删除,只需像append双端队列那样进行快速查找即可。

python performance dictionary deque data-structures

5
推荐指数
1
解决办法
913
查看次数