Redian新闻
>
菜鸟也来问一个关于油烟机选择的问题
avatar
菜鸟也来问一个关于油烟机选择的问题# Living
v*y
1
========题目=======
公司里有好多employee,给出入职和离职的时间段,打印出每个时间段的在职人数
输入:
[1, 2005, 2016]
[2, 2008, 2014]
[3, 2006, 2008]
[4, 2010, 2014]
输出:
2005-2006: 1
2006-2008: 2
2008-2010: 2
2010-2014: 3
2014-2016: 1
======解法分割线=======
目前只想到下面这个方法,不知道大家有没有更好的解法?
step 1. 把员工数据按入职时间排个序得到数组S1,然后按离职时间排个序得到数组S2
对于每一次查询[T_start, T_end]:
step 2. 使用开始时间对S1做二分查找,找到第一个起始时间>=T_start的元素,然后
往后扫描接下来所有的符合条件的员工,得到一个计数C1
step 3. 使用结束时间对S2做二分查找,找到最后一个结束时间<=T_end的元素,然后
往前扫描所有结束时间在查询范围内,但是起始时间复)。得到一个计数C2
step 4. C1+C2就是答案
复杂度:排序(nlogn),二分查找O(logn),线性扫面O(M)(扫描过程中遇到的元素个数
avatar
y*i
2
还是必须ex-dividend 之前?
avatar
z*a
3
版上考古了一圈儿,各种神器也都比较了一下,看大家推荐的基本都是装在柜子下面的
,因为我们厨房设计的是准备放一个wall mounted的,所以选了与神器三代同样牌子的
两款,各项spec也都比较了一下,不过心里还是不太有底,贴上来请大家帮忙参考一下,
http://www.ventingdirect.com/cavaliere-euro-ap238-psd-36-36-sta
个人比较喜欢这款,但是不知道这个玻璃的会不会不好清洁,而且玻璃罩子感觉也有点
罩不住
http://www.ventingdirect.com/cavaliere-euro-ap238-psl-36-36-sta
因为家里的风格是比较Contemporary的,所以比较喜欢这两种外观,不过心里一直纠结
是不是还是传统的那种中式油烟机更给力,请有经验的人帮忙看看吧,谢谢啦!
avatar
M*n
4
这个不就是meeting room II吗
avatar
s*8
5
看你是通过交易所交易,还是私下交易。
avatar
i*e
6
我到人为装不朽钢罩的比较好。
avatar
m*f
7
Segment tree
线段树
avatar
y*i
8
哦,那么通过IB/sogo/etrade这些网上交易所算那种呢?

【在 s******8 的大作中提到】
: 看你是通过交易所交易,还是私下交易。
avatar
z*a
9
是功能上有什么不同吗?还只是外观的考虑?

【在 i***e 的大作中提到】
: 我到人为装不朽钢罩的比较好。
avatar
G*O
10
排序了扫描一遍,遇到 start 就 count++, 遇到 end 就 count--
count = 0;
x = 2005 start, count = 1
x = 2006 start, count = 2
x = 2008 end, count = 1
x = 2008 start, count = 2
x = 2010 start, count = 3
.....
avatar
s*8
11
这算交易所,不管是网上交易所,还是网下交易所,ex-dividend前买进就行。

【在 y****i 的大作中提到】
: 哦,那么通过IB/sogo/etrade这些网上交易所算那种呢?
avatar
h*o
12
感觉玻璃罩子的不好,抽风面积小。
avatar
D*F
13
这是经典的扫描线问题,解法不限于扫描线,但是用线段树未免牛刀宰鸡。参见
Airplanes in the sky, Meeting Room等等,就用扫描线解法就好。
avatar
i*e
14
同意楼上说的。
不朽钢的那款,整个油烟机就是个罩子,吸风面积比玻璃的要大。

【在 z******a 的大作中提到】
: 是功能上有什么不同吗?还只是外观的考虑?
avatar
c*e
15
int minYear = 2004;
int maxYear = 2024;
int[] yearCount = new int[maxYear - minYear + 1];
数据输入阶段
forEach (employee)
for (year = employee.start; year <= employee.end; year ++)
yearCount[year] ++;
查询阶段
int count = 0;
for (i = startYear; i <= endYear; i ++)
count += years[i];
时间复杂度是o(n),空间复杂度是o(1)
这个问题,数量大的是员工,可以是几万,数量小的是年数,最多不过10到20年。所以
上述算法的性能很好
avatar
b*c
16
我家是第二个,不锈钢的,型号略有不同,牌子样子一样。没考虑玻璃的,原因是清洁
和抽风面积。

下,

【在 z******a 的大作中提到】
: 版上考古了一圈儿,各种神器也都比较了一下,看大家推荐的基本都是装在柜子下面的
: ,因为我们厨房设计的是准备放一个wall mounted的,所以选了与神器三代同样牌子的
: 两款,各项spec也都比较了一下,不过心里还是不太有底,贴上来请大家帮忙参考一下,
: http://www.ventingdirect.com/cavaliere-euro-ap238-psd-36-36-sta
: 个人比较喜欢这款,但是不知道这个玻璃的会不会不好清洁,而且玻璃罩子感觉也有点
: 罩不住
: http://www.ventingdirect.com/cavaliere-euro-ap238-psl-36-36-sta
: 因为家里的风格是比较Contemporary的,所以比较喜欢这两种外观,不过心里一直纠结
: 是不是还是传统的那种中式油烟机更给力,请有经验的人帮忙看看吧,谢谢啦!

avatar
h*n
17
最后总结时间段还是得排序,不如用楼上的办法,先排序,再++/--

【在 c*******e 的大作中提到】
: int minYear = 2004;
: int maxYear = 2024;
: int[] yearCount = new int[maxYear - minYear + 1];
: 数据输入阶段
: forEach (employee)
: for (year = employee.start; year <= employee.end; year ++)
: yearCount[year] ++;
: 查询阶段
: int count = 0;
: for (i = startYear; i <= endYear; i ++)

avatar
z*a
18
谢谢大家的回复,准备选不锈钢罩子的了
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。