相关题目:
1、视频拼接
class Solution {
public int videoStitching(int[][] clips, int T) {
/**
动态规划
int[] arr=new int[T+1];
Arrays.fill(arr,Integer.MAX_VALUE>>1);
arr[0]=0;
for( int i=1;i<=T;i++){
for(int[] item:clips){
if(item[0]<=i && i<=item[1]){
arr[i]=Math.min(arr[i],arr[item[0]]+1);
}
}
}
return arr[T]==Integer.MAX_VALUE>>1?-1:arr[T];
*/
int[] max=new int[T]; //存储着区间为I的自大的结束位置(也就是最大的区间长度)
for(int i=0;i<clips.length;i++){
max[clips[i][0]]=Math.max(max[clips[i][0]],clips[i][1]);
}
int pre=0;
int cur=0;
int count=0;
for(int i=0;i<T;i++){
cur=Math.max(max[i],cur);
if(cur==i){
return -1;
}
if(i==pre){
count++;
pre=cur;
}
}
return count;
}
}
于2020/10/24 开始编辑,持续更新