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; } };
12345678910111213141516171819cpp内置二分查找
upper_bound与lower_bound
upper_bound()函数定义在头文件中,用于在指定范围内查找大于目标值的第一个元素
相关链接