1 class Solution(object):
 2     def videoStitching(self, clips: 'List[List[int]]', T: int) -> int:
 3         li = sorted(clips, key = lambda x: (x[0],x[1]))
 4         #print(li)
 5         lens = len(li)
 6         if li[0][0]!=0:
 7             return -1
 8         if li[lens-1][1]<T:
 9             return -1
10         count = 0
11         basetag = 0
12         i = 0
13         while i < len(li):
14             if li[i][0]<=basetag:
15                 if li[i][1]>=T:
16                     return count + 1
17                 else:
18                     i += 1
19             else:
20                 count += 1
21                 basetag = li[i-1][1]
22                 if basetag >= T:
23                     return count
24             
25         count += 1
26         return count

关键的代码是第3行,将二维数组排序,先按第一个数字从小到大,再按第二个数字从小到大。

设定basetag用于存储之前的剪辑的最大时刻,在开始时刻更晚的剪辑中,寻找开始时间小于上一个剪辑的结束时间的所有剪辑中的,结束时间最晚的一个剪辑。

posted on 2019-04-07 19:45  Sempron2800+  阅读(180)  评论(0编辑  收藏  举报