1024. [贪心][动态规划] 视频拼接
1024. 视频拼接
在2020年10月24日程序员节遇见这道题!祝天下的程序员节日快乐!
方法一:贪心算法
对于某一个视频片段clips[i],最佳的决策就是找一个能与clips[i]有交集,且结束时间尽量靠后的一个clips[j],然后在以该片段的结束时间clips[j][1]为基准,再做类似的查找。
注意在查找过程中,我们遇到的最优解可能还是上一次找到的片段,因此再用\(O(n)\)时间也找不到一个更优的片段时,应当立即返回-1。
// 执行用时: 0 ms , 在所有 Java 提交中击败了 100.00% 的用户
// 内存消耗: 36 MB , 在所有 Java 提交中击败了 93.99% 的用户
class Solution {
public int videoStitching(int[][] clips, int T) {
int n = clips.length, e = 0, cnt = 0;
while (e < T){
int maxE = e;
for(int i = 0; i < n; i++){
if(clips[i][0] <= e && clips[i][1] > maxE){
maxE = clips[i][1];
}
}
if(maxE == e){
return -1;
}
e = maxE;
cnt++;
}
return cnt++;
}
}

浙公网安备 33010602011771号