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