当前位置:网站首页>LeetCode每日一题(1024. Video Stitching)
LeetCode每日一题(1024. Video Stitching)
2022-07-03 09:01:00 【wangjun861205】
You are given a series of video clips from a sporting event that lasted time seconds. These video clips can be overlapping with each other and have varying lengths.
Each video clip is described by an array clips where clips[i] = [starti, endi] indicates that the ith clip started at starti and ended at endi.
We can cut these clips into segments freely.
For example, a clip [0, 7] can be cut into segments [0, 1] + [1, 3] + [3, 7].
Return the minimum number of clips needed so that we can cut the clips into segments that cover the entire sporting event [0, time]. If the task is impossible, return -1.
Example 1:
Input: clips = [[0,2],[4,6],[8,10],[1,9],[1,5],[5,9]], time = 10
Output: 3
Explanation: We take the clips [0,2], [8,10], [1,9]; a total of 3 clips.
Then, we can reconstruct the sporting event as follows:
We cut [1,9] into segments [1,2] + [2,8] + [8,9].
Now we have segments [0,2] + [2,8] + [8,10] which cover the sporting event [0, 10].
Example 2:
Input: clips = [[0,1],[1,2]], time = 5
Output: -1
Explanation: We cannot cover [0,5] with only [0,1] and [1,2].
Example 3:
Input: clips = [[0,1],[6,8],[0,2],[5,6],[0,4],[0,3],[6,7],[1,3],[4,7],[1,4],[2,5],[2,6],[3,4],[4,5],[5,7],[6,9]], time = 9
Output: 3
Explanation: We can take clips [0,4], [4,7], and [6,9].
Constraints:
- 1 <= clips.length <= 100
- 0 <= starti <= endi <= 100
- 1 <= time <= 100
先按开始时间对片段进行排序, 如果开始时间相同则按结束时间倒序排序, 然后维护一个栈,保存需要进行拼接的片段, 遍历已排好序的片段, 考虑如下几种情况:
- 当前片段结束时间小于等于栈顶的结束时间, 当前片段不入栈
- 当前片段结束时间大于栈顶的结束时间,开始时间大于栈顶-1 的结束时间, 当前片段正常入栈
- 当前片段结束时间大于栈顶的结束时间,开始时间小于等于栈顶-1 的结束时间, 弹栈, 直到不符合此条件的时候,当前片段入栈
其他细节方面要注意的是片段必须有开始时间为 0 并且有一定时间跨度的片段,否则不可能完成拼接, 遍历过程中, 如果栈顶的结束时间大于等于 time 了那就不需要继续遍历了
impl Solution {
pub fn video_stitching(mut clips: Vec<Vec<i32>>, time: i32) -> i32 {
clips.sort_by(|a, b| {
if a[0] == b[0] {
return b[1].cmp(&a[1]);
}
a[0].cmp(&b[0])
});
if clips.first().unwrap()[0] != 0 {
return -1;
}
let mut stack: Vec<Vec<i32>> = Vec::new();
'outer: for c in clips {
while let Some(last) = stack.pop() {
if last[1] >= time {
stack.push(last);
break 'outer;
}
if c[0] > last[1] || c[1] <= last[1] {
stack.push(last);
continue 'outer;
}
if stack.is_empty() {
stack.push(last);
stack.push(c);
continue 'outer;
}
if stack.last().unwrap()[1] >= c[0] {
continue;
}
stack.push(last);
break;
}
stack.push(c);
continue;
}
if stack.last().unwrap()[1] < time {
return -1;
}
stack.len() as i32
}
}
边栏推荐
- 2022-2-13 learning the imitation Niuke project - home page of the development community
- [graduation season | advanced technology Er] another graduation season, I change my career as soon as I graduate, from animal science to programmer. Programmers have something to say in 10 years
- Logstash+jdbc data synchronization +head display problems
- LeetCode 715. Range module
- 图像修复方法研究综述----论文笔记
- Save the drama shortage, programmers' favorite high-score American drama TOP10
- [point cloud processing paper crazy reading classic version 10] - pointcnn: revolution on x-transformed points
- Utilisation de hudi dans idea
- Hudi 数据管理和存储概述
- 2022-2-13 learn the imitation Niuke project - Project debugging skills
猜你喜欢

Common penetration test range

图像修复方法研究综述----论文笔记

dried food! What problems will the intelligent management of retail industry encounter? It is enough to understand this article
![[point cloud processing paper crazy reading classic version 13] - adaptive graph revolutionary neural networks](/img/61/aa8d0067868ce9e28cadf5369cd65e.png)
[point cloud processing paper crazy reading classic version 13] - adaptive graph revolutionary neural networks
![[advanced feature learning on point clouds using multi resolution features and learning]](/img/f0/abed28e94eb4a95c716ab8cecffe04.png)
[advanced feature learning on point clouds using multi resolution features and learning]

Install third-party libraries such as Jieba under Anaconda pytorch

Crawler career from scratch (3): crawl the photos of my little sister ③ (the website has been disabled)

LeetCode 871. Minimum refueling times

LeetCode 715. Range module

【点云处理之论文狂读经典版8】—— O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis
随机推荐
There is no open in default browser option in the right click of the vscade editor
The server denied password root remote connection access
【Kotlin学习】高阶函数的控制流——lambda的返回语句和匿名函数
Low code momentum, this information management system development artifact, you deserve it!
[point cloud processing paper crazy reading classic version 8] - o-cnn: octree based revolutionary neural networks for 3D shape analysis
Beego learning - JWT realizes user login and registration
【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
Discussion on enterprise informatization construction
ERROR: certificate common name “www.mysql.com” doesn’t match requested host name “137.254.60.11”.
LeetCode 1089. Duplicate zero
Internet Protocol learning record
Common formulas of probability theory
Overview of database system
【点云处理之论文狂读前沿版9】—Advanced Feature Learning on Point Clouds using Multi-resolution Features and Learni
CSDN markdown editor help document
Numerical analysis notes (I): equation root
Hudi learning notes (III) analysis of core concepts
We have a common name, XX Gong
Education informatization has stepped into 2.0. How can jnpf help teachers reduce their burden and improve efficiency?
[graduation season | advanced technology Er] another graduation season, I change my career as soon as I graduate, from animal science to programmer. Programmers have something to say in 10 years