/** * struct Interval { * int start; * int end; * Interval(int s, int e) : start(start), end(e) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param n int整型 玩偶数 * @param m int整型 区间数 * @param intervals Interval类vector 表示区间 * @return int整型 */ bool check(int n, int m, vector<Interval>& intervals,int x) { int st=intervals[0].start; int res=0; for(int i=1;i<n;i++) { //cout<<st<<endl; int t=st+x; if(t<=intervals[res].end) { st=t; continue; } else if(res==m-1) { return false; } else { while(res<m&&t>intervals[res].end) { res++; } if(res==m) return false; if(t<intervals[res].start) { t=intervals[res].start; st=t; } else { st=t; } } } return true; } static bool cmp(Interval t1, Interval t2) { return t1.start<t2.start; } int doll(int n, int m, vector<Interval>& intervals) { // write code here sort(intervals.begin(),intervals.end(),cmp); int l=1,r=n; while(r-l>1) { int mid=(l+r)>>1; if(check(n,m,intervals,mid)) { l=mid; } else { r=mid; } } return l; } };
全部评论
(0) 回帖