当前位置:网站首页>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
}
}
边栏推荐
- Use the interface colmap interface of openmvs to generate the pose file required by openmvs mvs
- Spark 集群安装与部署
- WARNING: You are using pip ; however. Later, upgrade PIP failed, modulenotfounderror: no module named 'pip‘
- LeetCode 75. Color classification
- [kotlin learning] classes, objects and interfaces - classes with non default construction methods or attributes, data classes and class delegates, object keywords
- Digital statistics DP acwing 338 Counting problem
- 【Kotlin学习】运算符重载及其他约定——重载算术运算符、比较运算符、集合与区间的约定
- Using Hudi in idea
- 传统办公模式的“助推器”,搭建OA办公系统,原来就这么简单!
- STM32F103 can learning record
猜你喜欢
Common penetration test range
2022-2-13 learn the imitation Niuke project - Project debugging skills
Navicat, MySQL export Er graph, er graph
[point cloud processing paper crazy reading frontier version 8] - pointview gcn: 3D shape classification with multi view point clouds
[point cloud processing paper crazy reading frontier edition 13] - gapnet: graph attention based point neural network for exploring local feature
[point cloud processing paper crazy reading frontier version 10] - mvtn: multi view transformation network for 3D shape recognition
2022-2-14 learning xiangniuke project - Session Management
Sword finger offer II 091 Paint the house
Jenkins learning (II) -- setting up Chinese
Instant messaging IM is the countercurrent of the progress of the times? See what jnpf says
随机推荐
ERROR: certificate common name “*.” doesn’t match requested ho
State compression DP acwing 291 Mondrian's dream
LeetCode 75. Color classification
Crawler career from scratch (IV): climb the bullet curtain of station B through API
2022-2-13 learning the imitation Niuke project - home page of the development community
We have a common name, XX Gong
[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
【点云处理之论文狂读经典版10】—— PointCNN: Convolution On X-Transformed Points
WARNING: You are using pip version 21.3.1; however, version 22.0.3 is available. Prompt to upgrade pip
Computing level network notes
Pic16f648a-e/ss PIC16 8-bit microcontroller, 7KB (4kx14)
Sword finger offer II 091 Paint the house
【点云处理之论文狂读前沿版13】—— GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature
LeetCode 535. Encryption and decryption of tinyurl
Utilisation de hudi dans idea
Hudi integrated spark data analysis example (including code flow and test results)
【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
图像修复方法研究综述----论文笔记
Just graduate student reading thesis
Tag paste operator (#)