1024. Video Stitching

39 阅读1分钟

image.png

方法

要求从一系列视频子区间中选出尽可能少的一部分,使得这部分视频子区间能够重新剪出一个完整的视频。我们可以这样理解:给定区间 [0,time) 的一系列子区间(可能重叠),要求从中选出尽可能少的子区间,使得这些子区间能够完全覆盖区间 [0,time)

image.png

class Solution {
    public int videoStitching(int[][] clips, int time) {
        int[] dp = new int[time + 1];
        Arrays.fill(dp, Integer.MAX_VALUE - 1);
        dp[0] = 0;
        for (int i = 1; i <= time; i++) {
            for (int j = 0; j < clips.length; j++) {
                if (i > clips[j][0] && i <= clips[j][1]) {
                    dp[i] = Math.min(dp[i], dp[clips[j][0]] + 1);
                }
            }
        }

        return dp[time] == Integer.MAX_VALUE -1 ? -1 : dp[time];
    }
}

//  i > clips[j][0] && i <= clips[j][1]) 
// > : dp[i]已经存在,不需要再被》=考虑+1一次