356、给定一个数组,里面存的是用户id,登陆时间,登出时间,怎么求最大同时在线人数,时间复杂度要求O(N)

雷观:看到这个题,让我想起了 高中解 数学题,多思少算额。

突然,微微一笑,算法还有意思的。

要不,学之者不如好之者,好之者不如乐之者。

我刷题,我快乐。

刷题使我快乐。

《怎样解题》这本书,还比较有意思,抽空再学学。突然,这个题,加上这本书,让我感受到学习的乐趣了。

要不?

13、这个题应该考的是差分数组吧

12、这问题不就是力扣上一支箭射穿最多气球的踢吗,就是需要排序。。。

11、每个人在线时间点+1,最后再扫描一次就行

10、排序加扫描线 不过排序就nlogn了

9、完整题目应该是有三种操作:登入,登出,查询。
给你一系列的操作序列,每次“查询”操作输出对应结果,属于在线算法,也比较符合现实业务场景。

题目是面试官手打的,就给了一个数组

8、差分就行了

7、如果数组是无序的,那我想不出。有序的话直接扫描,多次查询的话可以用线段树、树状数组降到logn的查询复杂度

6、o n可以 计数排序思想排序就行

5、问下面试官o(n)怎么做

4、差分数组,但是需要先把所有时间戳排序nlogn了

原本也想先排序,但面试官说要O(N)的

或者用一个最小堆,记录离开时间,但是也需要所有的时间戳,也到不了n

3、定长数组,一天86400秒

没想到这,这样差分是可以

2、快手的题?在时间轴上记录当前登录人数与登出人数,线性扫一遍求最值就好了

老哥,能说一下用什么数据结构来做这个时间轴以及判断条件吗

个定长数组就好

1、很简单啊,定长时间数组,上线时间+1 下线时间-1,再前缀和扫描一下就能得出最大时间

懂了,感谢老哥们

定长数组可行;说排序的你们是认真的?

题目来源:https://maimai.cn/web/gossip_detail/29748311?src=app&webid=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Mjk3NDgzMTEsInUiOjE3ODcxMzYzNiwiZWdpZCI6IjlmNjBkMWNlNjNhZjExZWNhY2U2ZTQ0MzRiMmZhODg4In0.dOdS61lNeI6FQ-I_nuwa-WHZOXoyZ6xorMtF5phgHb8&share_channel=2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值