擅长:python、mysql、java
<p>我同意Woot4Moo的观点,有些东西看起来不太对劲,我建议你多关注栈的使用(而不是双链表)。请参见<a href="http://www.geeksforgeeks.org/the-stock-span-problem/" rel="nofollow">this link to the Stock Span problem</a>,它有助于详细说明跟踪价格列表中差异的<code>O(N)</code>解决方案。这可以通过添加杀虫剂的条件加以扩展。在</p>
<p>例如,它将填补以下空白:</p>
<pre><code>import sys
ps = [int(s) for s in list(sys.stdin)[1].strip().split()]
stack = [ps[0]]
max_days = 0
for i in range(1, len(ps)):
days[i] = 1 if ps[i] > ps[i-1] else 0
# TODO - Logic to update days[i]
while len(stack) > 0 and ps[i] <= stack[-1][1]:
(ps_other, days_other) = stack.pop()
stack.append((ps[i], days[i])
max_days = max(max_days, days[i])
print(max_days)
</code></pre>
<p>我很快在<code>O(N^2)</code>中实现,发现80%的测试通过(其余的超时),因此根据上面的链接更巧妙地使用堆栈应该可以完成这项工作。在</p>
^{pr2}$
<hr/>
<p><strong>编辑</strong>:请注意系统标准HackerRank用于测试输入。在</p>