LeetCode1024. 视频拼接(java)

1.原题

你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。

视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。

我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果无法完成该任务,则返回 -1 。
LeetCode1024. 视频拼接(java)_第1张图片
原题链接

2. 方案

// 用dp[i]代表从0到时刻i最小片段个数;记录时刻 i-1 能表示的最大时刻maxRight;
//如果 时刻 i-1 能表示时刻i,dp[i]= dp[i-1],否则,查找能表示时刻i的片段,dp[i] = dp[i-1] +1;
class Solution {
    public int videoStitching(int[][] clips, int T) {
        int maxRight = -1;
        int result = 0;
        for(int i = 1; i<= T; i++){            
            boolean found = false;
            if(maxRight>= i){
                found = true;
            }
            else{
                for(int j = 0; j= clips[j][0] && i<= clips[j][1]){
                        found = true;
                        maxRight = Math.max(maxRight, clips[j][1]);
                    }
                }
                if(found){
                    result++;
                }
                else{
                    result= -1;
                    break;
                } 
            }
        }
        return result;
    }
}

你可能感兴趣的:(LeetCode)