当前位置:网站首页>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
}
}
边栏推荐
- 【Kotlin学习】类、对象和接口——带非默认构造方法或属性的类、数据类和类委托、object关键字
- Excel is not as good as jnpf form for 3 minutes in an hour. Leaders must praise it when making reports like this!
- 2022-2-13 learning the imitation Niuke project - home page of the development community
- [point cloud processing paper crazy reading frontier version 10] - mvtn: multi view transformation network for 3D shape recognition
- Sword finger offer II 029 Sorted circular linked list
- Word segmentation in full-text indexing
- 【点云处理之论文狂读前沿版12】—— Adaptive Graph Convolution for Point Cloud Analysis
- Use the interface colmap interface of openmvs to generate the pose file required by openmvs mvs
- 2022-2-13 learning xiangniuke project - version control
- [untitled] use of cmake
猜你喜欢
![[point cloud processing paper crazy reading classic version 14] - dynamic graph CNN for learning on point clouds](/img/7d/b66545284d6baea2763fd8d8555e1d.png)
[point cloud processing paper crazy reading classic version 14] - dynamic graph CNN for learning on point clouds

Spark structured stream writing Hudi practice

【点云处理之论文狂读前沿版10】—— MVTN: Multi-View Transformation Network for 3D Shape Recognition
![[kotlin learning] control flow of higher-order functions -- lambda return statements and anonymous functions](/img/a3/b442508af9b059d279cffb34dee9bf.png)
[kotlin learning] control flow of higher-order functions -- lambda return statements and anonymous functions

LeetCode 535. Encryption and decryption of tinyurl

Liteide is easy to use

Excel is not as good as jnpf form for 3 minutes in an hour. Leaders must praise it when making reports like this!

IDEA 中使用 Hudi

LeetCode 57. Insert interval

【点云处理之论文狂读经典版14】—— Dynamic Graph CNN for Learning on Point Clouds
随机推荐
State compression DP acwing 291 Mondrian's dream
LeetCode 438. Find all letter ectopic words in the string
Install third-party libraries such as Jieba under Anaconda pytorch
[point cloud processing paper crazy reading classic version 11] - mining point cloud local structures by kernel correlation and graph pooling
Integrated use of interlij idea and sonarqube
Jenkins learning (III) -- setting scheduled tasks
Crawler career from scratch (II): crawl the photos of my little sister ② (the website has been disabled)
With low code prospect, jnpf is flexible and easy to use, and uses intelligence to define a new office mode
dried food! What problems will the intelligent management of retail industry encounter? It is enough to understand this article
STM32F103 can learning record
Tag paste operator (#)
AcWing 788. Number of pairs in reverse order
Crawler career from scratch (I): crawl the photos of my little sister ① (the website has been disabled)
Explanation of the answers to the three questions
【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
【Kotlin疑惑】在Kotlin类中重载一个算术运算符,并把该运算符声明为扩展函数会发生什么?
Redis learning (I)
Spark 结构化流写入Hudi 实践
Low code momentum, this information management system development artifact, you deserve it!
【点云处理之论文狂读经典版7】—— Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graphs