微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[Swift]LeetCode1024. 视频拼接 | Video Stitching

You are given a series of video clips from a sporting event that lasted T seconds.  These video clips can be overlapping with each other and have varied lengths.

Each video clip clips[i] is an interval: it starts at time clips[i][0] and ends at time clips[i][1].  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,T]).  If the task is impossible,return -1.

Example 1:

Input: clips = [[0,2],[4,6],[8,10],[1,9],5],[5,9]],T = 10 Output: 3 Explanation: We take the clips [0,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,10] which cover the sporting event [0,10]. 

Example 2:

Input: clips = [[0,1],2]],T = 5 Output: -1 Explanation: We can‘t cover [0,5] with only [0,1] and [0,2]. 

Example 3:

Input: clips = [[0,[6,8],[0,4],3],7],[2,[3,T = 9 Output: 3 Explanation: We can take clips [0,and [6,9]. 

Example 4:

Input: clips = [[0,8]],T = 5 Output: 2 Explanation: Notice you can have extra video after the event ends.

Note:

  1. 1 <= clips.length <= 100
  2. 0 <= clips[i][0],clips[i][1] <= 100
  3. 0 <= T <= 100
Runtime: 16 ms
Memory Usage: 18.8 MB
 1 class Solution {
 2     func videoStitching(_ clips: [[Int]],_ T: Int) -> Int {
 3         var last:Int = 0
 4         var cnt:Int = 0
 5         while(true)
 6         {
 7             if last >= T {break}
 8             var found:Bool = false
 9             var mx:Int = -1
10             for i in 0..<clips.count
11             {
12                 if clips[i][0] <= last
13                 {
14                     mx = max(mx,clips[i][1])
15                 }
16             }
17             if mx > last
18             {
19                 last = mx
20                 cnt += 1
21                 found = true
22             }
23             if !found {break}
24         }
25         if last >= T {return cnt}
26         return -1
27     }
28 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐