LeetCode1024 视频拼接

该篇文章介绍了如何解决LeetCode题目1024,即在给定的时间范围内,通过合理拼接视频片段以覆盖整个时间段的算法。主要步骤包括对输入片段按起点排序,遍历并更新覆盖区域,最后返回覆盖次数或-1。
摘要由CSDN通过智能技术生成

Leecode1024 视频拼接

1.题目描述

在这里插入图片描述

2.解题思路

首先对输入的clips数组进行按照起点顺序的排序,然后依次遍历数组,直到一个片段的起点不大于当前已经覆盖的最右端,如果接下来某一个视频片段的起点小于等于已经覆盖的最右端,且终点为最大值,则计数器加一,并且更新已覆盖的范围,直到覆盖整个时间。否则返回-1

3.算法流程

1.排序
2.初始化已覆盖区域
3.开始遍历,当下一个区域符合条件,则更新覆盖区域,计数器count+1
4.把遍历指针更新到已完成遍历的元素后方,直到完成遍历
6.如果右值大于等于time,则返回count,否则返回-1

4.算法思路

sort(points)
right = 0; count = 0; i = 0;
while i < size of clips and right < time:
	serchFlag = i
	start,end = clip in clips
	while searchFlag < size of clips and clips[searchFlag][0] <= right:
		if clips[searchFlag][1] > end:
			end = clips[searchFlag][1];
	i = searchFlag
	if start > right:
		return -1
	else: 
		count++; right = end;
if right>=time:
	return count
else:
	return -1 

5.代码

class Solution {
public:
    static bool cmp(const vector<int>& a, const vector<int>& b){
        return a[0]<b[0];
    }
    int videoStitching(vector<vector<int>>& clips, int time) {
        sort(clips.begin(),clips.end(),cmp);
        int count = 0;
        int right = 0;
        int i = 0;
        while(i<clips.size()&&right<time){
            int searchFlag = i;
            int start = clips[i][0];
            int end = clips[i][1];
            while(searchFlag<clips.size()&&clips[searchFlag][0]<=right){
                if(clips[searchFlag][1]>end){
                    end = clips[searchFlag][1];
                }
                searchFlag++;
            }
            i = searchFlag;
            if(start<=right&&end>right){
                count++;
                right = end;
            }else if(start>right){
                return -1;
            }   
        }
        if(right>=time){
            return count;
        }else{
            return -1;
        }
        
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值