leetcode(1024. 视频拼接) c++实现
直接上代码:
class Solution {
public:
int videoStitching(vector<vector<int>>& clips, int T)
{
int flag=-1;
for (int i=0;i<clips.size();i++)
{
if(clips[i][1]>=T)
{
flag=1;break;
}
}
if (flag== -1)
return flag; // 看他的最大值是否比T小,如果小肯定不合格,就像例二
int index=0,maxlen=0,count=0,len,time=T; //time控制最大循环次数
while(index < T && time--) //如果不控制循环次数 可能会有短片的可能,这样就会死循环例如[0,4],[5,9]
{
for (int i=0;i<clips.size();i++)
{
if(clips[i][0] <= index)
{
if (clips[i][1]<=T)
len=clips[i][1]-index;
else{
len=T-index;
} // 从左开始,找最大有效短长
if (len > maxlen)
maxlen=len;
}
}
count = count+1; // 记录拼接次数
index=maxlen+index;
maxlen=0;
len=0;
}
if (T==index) // 看是否拼接成功
return count;
else{
return -1;
}
}
};