Enlace de la pregunta diaria de Leetcode
: 1024.
Idea de resolución de problemas de empalme de video : preprocese el intervalo dado para obtener el punto final más grande correspondiente a cada punto final izquierdo. Atraviesa todo el intervalo y cubre la longitud máxima que se puede alcanzar para cada actualización dinámica, si un determinado intervalo está completamente cubierto, el número de intervalos +1.
responder:
class Solution:
def videoStitching(self, clips: List[List[int]], T: int) -> int:
# 以左端点开头的最大右端点
max_index = [0 for i in range(T + 1)]
for example in clips:
# print(example)
if example[0] <= T:
max_index[example[0]] = max(max_index[example[0]], example[1])
# cnt记录片段数量, pre记录前一个找到的右端点位置,last表示当前的最大右端点
cnt, pre, last = 0, 0, 0
for t in range(T):
last = max(max_index[t], last)
# 有空缺, 不能完全覆盖。 由于t < T所以不用担心最后一个元素
if t == last:
return -1
# 匹配到前一个的结尾,覆盖了整个区间,可以找新的区间了
if t == pre:
cnt += 1
pre = last
return cnt