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 <= clips.length <= 100
0 <= clips[i][0],clips[i][1] <= 100
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] 举报,一经查实,本站将立刻删除。