2251. 花期内花的数目
给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] = [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi (都 包含)。同时给你一个下标从 0 开始大小为 n 的整数数组 persons ,persons[i] 是第 i 个人来看花的时间。
请你返回一个大小为 n 的整数数组 answer ,其中 answer[i]是第 i 个人到达时在花期内花的 数目 。
解答
class Solution {
public:
vector<int> fullBloomFlowers(vector<vector<int>>& flowers, vector<int>& persons) {
vector<int> op,cl;
for(auto f:flowers){
op.push_back(f[0]);
cl.push_back(f[1]);
}
sort(op.begin(),op.end());
sort(cl.begin(),cl.end());
int n=persons.size();
vector<int> ans(n);
for (int i = 0; i < n; ++i)
ans[i] = (upper_bound(op.begin(), op.end(), persons[i]) - op.begin())
- (lower_bound(cl.begin(), cl.end(), persons[i]) - cl.begin());
return ans;
}
};
cpp内置二分查找
upper_bound
与lower_bound
upper_bound()
函数定义在头文件中,用于在指定范围内查找大于目标值的第一个元素
相关链接