Loading

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++;
    }
}
posted @ 2020-10-24 09:37  上海井盖王  阅读(127)  评论(0)    收藏  举报