美文网首页
1024. 视频拼接

1024. 视频拼接

作者: 风卷晨沙 | 来源:发表于2019-07-17 14:44 被阅读0次

1.题目

视频拼接 - 力扣(LeetCode) https://leetcode-cn.com/problems/video-stitching/

2.题解

首先,先准备一个dp数组,给后面存放状态使用。之后给clips数组进行排序,return o1-o2;代表交换位置。然后遍历这个视频碎片数组,排除不符合要求的情况。对于目标碎片,则分为两类,分别是以0开始的碎片段和其他碎片段两类。分别计算出对于dp数组中储存的值。
如果拼接成功,dp[T]的值就是目标结果,不成功则输出-1。

3.代码

//视频拼接的逻辑
    class Solution {
        public int videoStitching(int[][] clips, int T) {
        
            // 状态量,用于记录到达对应时间点所需的最少碎片数
            int[] dp = new int[T + 1];
            // 根据视频碎片的起点来排序
            Arrays.sort(clips, new Comparator<int[]>() {
                @Override
                public int compare(int[] o1, int[] o2) {
                    return o1[0] - o2[0];
                }
            });
            // 遍历所有视频碎片
            for (int[] k : clips) {
                // 当视频碎片不在我们要的时间范围内时,直接跳过
                if (k[0] >= dp.length){
                     continue;
                }
                // 视频碎片没有办法连续,直接跳出返回 -1
                if (k[0] != 0 && dp[k[0]] == 0){
                     return -1;
                }
                // 当视频碎片的末端超过我们要求的时间,进行裁剪
                if (k[1] >= dp.length){
                    k[1] = dp.length - 1; 
                }
                // 将视频碎片分为两类
                if (k[0] == 0) {
                    // 从 0开始的,直接范围内的时间都置为 1个碎片可达
                    for (int i = k[0]; i <= k[1]; i++) {
                        dp[i] = 1;
                    }
                } else {
                    // 其他碎片段,判断新的碎片能否带来更少的所需碎片
                    int temp = dp[k[0]] + 1;
                    for (int i = k[0]; i <= k[1]; i++) {
                        if (dp[i] == 0 || dp[i] > temp) {
                            dp[i] = temp;
                        }
                    }
                    
                }
            }
            // dp[T]为 0意味着未能到达 T点,因此未能拼接成功
            return dp[T] == 0? -1: dp[T];
            
        }
    }

4.执行结果

image.png

相关文章

  • 1024. 视频拼接

    1.题目 视频拼接 - 力扣(LeetCode) https://leetcode-cn.com/problems...

  • 1024. 视频拼接

  • 1024. 视频剪辑(Python)

    难度:★★★☆☆类型:数组方法:贪心,动态规划 题目 力扣链接请移步本题传送门[https://leetcode-...

  • ffmpeg视频拼接

    ffmpeg4路视频拼接ffmpeg -s 1920x960 -pix_fmt yuv420p -r 25 -i ...

  • 视频添加拼接

    最近遇到一个需求:画板(一张图片)上放入N个视频,N张照片,最后保存成一个完成视频。实例:一张背景图嵌入2个视频和...

  • 视频地址拼接

    str+= ' ' +' '

  • ffmpeg 方法封装-PHP

    ffmpeg公用方法封装-PHP 拼接视频 添加字幕(硬压字幕) 音频插入 压缩视频 设置关键帧(主要用于视频拼接...

  • 湘潭液晶拼接屏供应商

    在湘潭打听液晶拼接屏供应商,建议深圳宇扬液晶拼接屏,主营各种工业液晶拼接屏、拼接大屏、异形液晶拼接屏、视频拼接墙等...

  • 铜川液晶拼接屏安装批发

    铜川液晶拼接屏安装批发 想要明确铜川液晶拼接屏安装批发,先来明白下液晶拼接屏介绍:液晶拼接屏别称液晶拼接视频墙、宽...

  • 阿坝液晶拼接屏

    想要明白阿坝液晶拼接屏,先来懂得下液晶拼接屏概述:液晶拼接屏又叫宽视角液晶拼接屏、液晶拼接视频墙等。可以根据不用经...

网友评论

      本文标题:1024. 视频拼接

      本文链接:https://www.haomeiwen.com/subject/eoyqlctx.html