擅长:python、mysql、java
<p>为此,我开发了一个时间复杂度为<code>O(n)</code>的算法</p>
<pre class="lang-py prettyprint-override"><code>def consecutive(lst):
lst.append(0)
count = 1
result = []
for i, value in enumerate(lst):
if value == lst[min(len(lst) - 1, i + 1)]:
count += 1
else:
result.append((value, count))
count = 1
return result
</code></pre>
<hr/>
<h2>结果</h2>
<p>让我们为这个函数尝试几个测试用例</p>
<pre class="lang-py prettyprint-override"><code>>>> lst = [1, 1, 1, 3, 5, 1, 1, 3, 3]
>>> consecutive(lst)
[(1, 3), (3, 1), (5, 1), (1, 2), (3, 2)]
</code></pre>
<p>下面是验证代码的另一个测试用例</p>
<pre class="lang-py prettyprint-override"><code>>>> lst = [1, 2, 5, 5, 3, 2, 2, 1]
>>> consecutive(lst)
[(1, 1), (2, 1), (5, 2), (3, 1), (2, 2), (1, 1)]
</code></pre>