class Solution {
public int videoStitching(int[][] clips, int T) {
int res=1;
//用TreeMap将key字段有序存储
Map<Integer,Integer> map=new TreeMap<>();
int a,b,c;
for (int i = 0; i < clips.length; i++) {
a=clips[i][0];
b=clips[i][1];
c=map.getOrDefault(a,0);
//同一字段只存取能达到的最大值
if (b>c){
map.put(a,b);
}
}
// System.out.println(map);
a=0;
//获取从0开始能达到的最大值b
b=map.getOrDefault(0,-1);
if (b>=T) return 1;
c=0;
//依次遍历0-b,更新下一步能达到的最大值
//当a(开始值)遍历到了a能达到的最大值b,将b更新为a-b中能达到的最大值,步数+1
while (a<=b){
c=Math.max(c,map.getOrDefault(a,0));
if (c>=T) return ++res;
if (a==b){
res++;
b=c;
}
a++;
}
return -1;
}
}