擅长:python、mysql、java
<p>如果首先将数据转换为方便的形式,则分析数据通常更容易。在这种情况下,<a href="http://en.wikipedia.org/wiki/Run-length_encoding" rel="nofollow">run-length-encoding</a>将是一个很好的起点:</p>
<pre><code>from itertools import groupby, accumulate
from collections import defaultdict
def sub_seq(li, n):
d = defaultdict(list)
rle = [(k, len(list(g))) for k, g in groupby(li)]
endpoints = accumulate(size for k, size in rle)
for end_index, (value, count) in zip(endpoints, rle):
for index in range(end_index - count, end_index - n + 1):
d[value].append(index)
return dict(d)
</code></pre>