统计每秒在线人数 求解?

有这样一个需求:
我有一个二维数[[1,3],[10,100],[1,86400],[9,8600],[38,88],[999,3135]……]
数组里面存的一天服务里面用户登入和登出对应的天秒数,00:00点做为0,00:10秒,记做10,然后写一个函数统计每秒的在线人数?

vector<int> CountOnlineNum(vector<int> vec)
{
    vector<int> res(int, 86400) 
    for(int i=0; i<vec.size(); i  )
    {
        for(int j=vec[i].[0]; j<vec[i].[1]; j  )
        {
            res[j]  ; //加的次数太多,太慢了,需要更高效的方法
        }
    }
    return res;
}

加的次数太多,太慢了,需要更高效的方法,请提供正确想法或者代码?挑战者们疯狂吧!

这个确实是算法,不是讲究语言,也不用考虑什么高并发,换什么高性能机器,就单核单线程,只说算法

#笔试题目#
全部评论
空间换时间。先排序,然后开两个数组A,B,Ai记录i秒及以前登入的总人数,Bi记录登出总人数,i时刻的在线人数为Ai-Bi。建表复杂度nlogn,查询复杂度1。
点赞 回复 分享
发布于 2019-07-04 00:04
入点+1,出点的下一秒-1,前缀和就能算出来最后的每秒在线人数了
点赞 回复 分享
发布于 2019-07-04 00:03
开个24*60*60的数组,登入时刻+1,退出时刻-1,这样数组每个格子代表某一时刻的人数变化量,然后求和完事儿了
点赞 回复 分享
发布于 2019-07-04 02:29
线段树?
点赞 回复 分享
发布于 2019-07-03 23:50
区间合并
点赞 回复 分享
发布于 2019-07-04 00:01
我头条二面同样问题 我帖子里面楼层有解法 dp
点赞 回复 分享
发布于 2019-07-04 15:39

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
评论
点赞
9
分享
牛客网
牛客企业服务