[Leetcode eine Frage pro Tag] 1024. Video-Stitching (Intervall-Vorverarbeitung, gierig)

Leetcodes täglicher Fragenlink
: 1024.
Idee zur Lösung von Video-Spleißproblemen : Verarbeiten Sie das angegebene Intervall vor, um den größten Endpunkt zu erhalten, der jedem linken Endpunkt entspricht. Es durchläuft das gesamte Intervall und deckt die maximale Länge ab, die für jede dynamische Aktualisierung erreicht werden kann. Wenn ein bestimmtes Intervall vollständig abgedeckt ist, beträgt die Anzahl der Intervalle +1.
Antworten:

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
        
            

Ich denke du magst

Origin blog.csdn.net/qq_37753409/article/details/109258321
Empfohlen
Rangfolge