题目:
分析:
快3周没写代码了。以后再次恢复正常情况下每天1-3题吧。
不是区间dp问题,自己还是想了1-2min的。
一个贪心题,还是挺容易想的。
代码:
class Solution {
public:
static bool cmp(vector<int> &a,vector<int> &b)
{
if(a[0]==b[0]) return a[1]<b[1];
return a[0]<b[0];
}
int videoStitching(vector<vector<int>>& clips, int T) {
sort(clips.begin(),clips.end(),cmp);
if(T==0) return 0;
if(clips.size()==0) return -1;
int maxx=clips[0][1];
int minn=clips[0][0];
for(int i=0;i<clips.size();i++)
{
maxx=max(maxx,clips[i][1]);
minn=min(minn,clips[i][0]);
}
if(minn!=0||maxx<T) return -1;
int ans=1;
int b=clips[0][1];
int a=clips[0][0];
int i=1;
for(;i<clips.size();i++)
{
if(clips[i][0]==0) b=max(b,clips[i][1]);
else break;
}
if(b>=T) return 1;
while(i<clips.size())
{
int bb=-1;
while(i<clips.size()&&b>=clips[i][0])
{
bb=max(bb,clips[i][1]);
i++;
}
if(bb==-1) return -1;
b=bb;
ans++;
if(b>=T) break;
}
return ans;
}
};