题目:
官方题解一:动态规划
class Solution {
public int videoStitching(int[][] clips, int T) {
int[] dp = new int[T+1];
for(int j=0; j<=T; j++){
dp[j] = Integer.MAX_VALUE-1;
}
dp[0]=0;
for(int i=1; i<=T; i++){
for(int[] clip: clips){
if(clip[0]<i && clip[1]>=i){
dp[i] = Math.min(dp[i], dp[clip[0]]+1);
}
}
System.out.println(dp[i]);
}
return dp[T]==Integer.MAX_VALUE-1?-1:dp[T];
}
}
官方题解二:贪心算法
class Solution {
public int videoStitching(int[][] clips, int T) {
int[] right_value = new int[T+1];
for(int[] clip: clips){
if(clip[0]<=T){
right_value[clip[0]] = Math.max(right_value[clip[0]], clip[1]);
}
}
int last = 0;
int pre = 0;
int count = 0;
for(int i=0; i<T; i++){
last = Math.max(last, right_value[i]);
if(i==last){
return -1;
}
if(i==pre){
pre = last;
count++;
}
}
return count;
}
}