首页 > 其他分享 >花期内的花的数目

花期内的花的数目

时间:2023-10-08 18:57:16浏览次数:29  
标签:ends end int starts begin 花期 vector 数目

2251.花期内的花的数目
看到题目的第一想法是桶排序,但是想想肯定会超时,在题解区看到了这么一种解法,感觉很有意思,就记录一下。
要统计某一时间内多少花开放,也就是统计某一时间有多少花开放在它之前,结束在它之后。因为一朵花的开始一定是比结束早的,所以并不需要关心匹配问题。
使用两个数组分别存储花开与花谢的日期,排序后使用二分法即可快速得到某一日期的花开数量。

  • 优点 :不用存储花期的对应关系。
  • 缺点 : 不能确定是哪些花在这天会开放。
class Solution {
public:
    vector<int> fullBloomFlowers(vector<vector<int>>& flowers, vector<int>& persons) {
        int n = flowers.size();
        vector<int> starts(n), ends(n);
        for (int i = 0; i < n; ++i) {
            starts[i] = flowers[i][0];
            ends[i] = flowers[i][1];
        }
        sort(starts.begin(), starts.end());
        sort(ends.begin(), ends.end());
        int m = persons.size();
        vector<int> ans(m);
        for (int i = 0; i < m; ++i) {
            int x = upper_bound(starts.begin(), starts.end(), persons[i]) - starts.begin();
            int y = lower_bound(ends.begin(), ends.end(), persons[i]) - ends.begin();
            ans[i] = x - y;
        }
        return ans;
    }
};

标签:ends,end,int,starts,begin,花期,vector,数目
From: https://www.cnblogs.com/zhywyt/p/17737606.html

相关文章

  • 力扣-2427-公因子的数目
    给你两个正整数a和b,返回a和b的公因子的数目。如果x可以同时整除a和b,则认为x是a和b的一个公因子。 示例1:输入:a=12,b=6输出:4解释:12和6的公因子是1、2、3、6。示例2:输入:a=25,b=30输出:2解释:25和30的公因子是1、5。提示:1<=a,......
  • 力扣-1512-好数对的数目
    给你一个整数数组nums。如果一组数字(i,j)满足nums[i]==nums[j]且i<j,就可以认为这是一组好数对。返回好数对的数目。 示例1:输入:nums=[1,2,3,1,1,3]输出:4解释:有4组好数对,分别是(0,3),(0,4),(3,4),(2,5),下标从0开始示例2:输入:nums=[1,1,1,1]输出......
  • 可以被K整除连通块的最大数目
    给你一棵n个节点的无向树,节点编号为0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi有一条边同时给你一个下标从0开始长度为n的整数数组values,其中values[i]是第i个节点的值。再给你一个整数......
  • 花期内花的数目
    给你一个下标从0开始的二维整数数组flowers其中flowers[i]=[starti,endi]表示第i朵花的花期从starti到endi同时给你一个下标从0开始大小为n的整数数组people,people[i]是第i个人来看花的时间请你返回一个大小为n的整数数组answer,其中answer[i]是第i......
  • [LeetCode] 2251. 花期内花的数目 - 二分查找/有序数组
    Problem:2251.花期内花的数目思路看题目应该是一道比较经典的差分,本来准备拿差分数组做的,后来搂了一眼题解,发现用二分的方法更简单解题方法此题有一种很简便的方法,第i个人到达时间为people[i],所以我们不难找到在这个时间之前花期已经开始的花的数量,即v1=start<=people[i]......
  • LC2251 花期内花的数目
    方法一:差分因为是先修改后查询,很容易想到差分,但因为数据值域\([-10^9,10^9]\)过大,所以不能使用差分数组,而应用map进行存储,如代码所示:map<int,int>diff;//正常进行差分操作for(auto&f:flowers){diff[f[0]]++;diff[f[1]+1]--;}//dosomethingautoit......
  • 力扣-2798-满足目标工作时长的员工数目
    公司里共有n名员工,按从0到n-1编号。每个员工i已经在公司工作了hours[i]小时。公司要求每位员工工作至少target小时。给你一个下标从0开始、长度为n的非负整数数组hours和一个非负整数target。请你用整数表示并返回工作至少target小时的员工数。 示......
  • linux 中批量输出指定目录的磁盘占用和文件数目
     001、磁盘占用(base)[root@pc1test1]#lstest1test2test3(base)[root@pc1test1]#find$PWD-typed##查出所有目录/home/test1/home/test1/test1/home/test1/test1/test/home/test1/test2/home/test1/test3(base)[root@pc1test1]#find$PWD......
  • [LeetCode] 1353. Maximum Number of Events That Can Be Attended 最多可以参加的会
    Youaregivenanarrayof events where events[i]=[startDayi,endDayi].Everyevent i startsat startDayi andendsat endDayi.Youcanattendanevent i atanyday d where startTimei<=d<=endTimei.Youcanonlyattendoneeventatanytime ......
  • 【Leetcode刷题记录】1、统计参与通信的服务器;2、统计二叉树中好节点的数目;3、从两个
    1、统计参与通信的服务器题目:这里有一幅服务器分布图,服务器的位置标识在 m*n 的整数矩阵网格 grid 中,1表示单元格上有服务器,0表示没有。如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。请你统计并返回能够与至少一台其他服务器进行通信的服务器的......