leetcode:1024. 视频拼接(中等,贪心)

题目:

leetcode:1024. 视频拼接(中等,贪心)

分析:

快3周没写代码了。以后再次恢复正常情况下每天1-3题吧。

不是区间dp问题,自己还是想了1-2min的。

一个贪心题,还是挺容易想的。

代码:

leetcode:1024. 视频拼接(中等,贪心)

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;
    }
};
上一篇:畅通工程问题(prim最小生成树)


下一篇:前端开发环境准备