擅长:python、mysql、java
<p>我试过做这个:</p>
<pre><code>def billboard_creator(seq):
seq = [sum(elem) for elem in seq]
bill_len = max(seq)-1
return [''] * bill_len
def find_posters(billboard, posters):
for posternum, (start, length) in enumerate(posters):
billboard[start : start + length] = [posternum] * length
return billboard
post_seq = [(1, 4), (2, 5), (8, 3), (3, 2), (7, 4)]
def find_post_num(post_seq):
empty_billboard = billboard_creator(post_seq)
final_billboard = find_posters(empty_billboard, post_seq)
if '' in final_billboard:
return len(set(final_billboard))-1
return len(set(final_billboard))
print(find_post_num(post_seq))
</code></pre>
<p>请注意,这根本不是解决问题的最佳方法,但我认为它有助于理解如何解决问题</p>
<p>所以我把问题分为三个主要部分:
在第一部分中,我做了一个函数来求广告牌的最小长度。我通过找到海报的开始和长度具有最大值的海报,然后返回一个由n个空字符串组成的列表,其中n是最大值减去1(因为海报,例如,在海报(7,4)中,海报从7开始,而不是8)</p>
<p>然后我做了另一个函数,循环遍历海报序列,并用海报替换空的广告牌的索引(根据海报的post\ seq中的索引在广告牌中放置一个不同的值)</p>
<p>然后在最后一个函数中调用这两个函数,检查公告牌中的所有唯一值,如果有“”,则减去一个(因此那里没有海报)</p>
<p>我尝试了提供的所有3个测试用例,结果都成功了</p>
<p>希望这有帮助</p>