avatar
nikon 10.16大涨价# PhotoGear - 摄影器材
s*t
1
给一个int[] data,数组大小最大100K
实现 int[] findIndices(long low, long upper),返回值从小到大排序,同一个data
,findIndices会被执行多次
例:[100, 300, 25, 123, 3, 157, 9, 103, 304], findIndices(100, 200) 返回 [0,
3, 5, 7]
我想到就两种方法:
1:loop数组一个一个比较
2:排序成 [ {3, 4}, {9, 6}, {25, 2}, {100, 0}, {103, 7}, {123, 3}, {157, 5},
{300, 1}, {304, 8} ],然后binary search low and upper,得到index的数组,再
排序这个结果,返回。如上面的列子,先得到 [{100, 0}, {103, 7}, {123, 3}, {157
, 5}],拿indces,[0, 7, 3, 5],再sort得到[0, 3, 5, 7]
2在极端的情况下会更慢,因为结果要再排序。
请教有没有更快的方法?
avatar
y*t
2
骂的明明不是同一拨人,
舔的看到一个,那就是lopt.
舔obama的境界已经成为湾版第一人了...
lol..
avatar
S*n
3
B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
will all change on October 16th.
目前
Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon
avatar
w*o
4
你这个例子返回值也没从大到小排序啊。
私以为,挨个比较是最简单最快的方法。
for (int i = 0; i < len; i++) if (lower < nums[i] < upper) res.add(i);
avatar
t*u
5

您老正好与他老相反,小奥加税也骂,减税也骂。。。。。。

【在 y****t 的大作中提到】
: 骂的明明不是同一拨人,
: 舔的看到一个,那就是lopt.
: 舔obama的境界已经成为湾版第一人了...
: lol..

avatar
t*e
6
可怜的铁丝们哪
avatar
s*t
7
不好意思,是小到大,已修改。

【在 w*******o 的大作中提到】
: 你这个例子返回值也没从大到小排序啊。
: 私以为,挨个比较是最简单最快的方法。
: for (int i = 0; i < len; i++) if (lower < nums[i] < upper) res.add(i);

avatar
y*t
8
拿出证据来,
我骂在哪里了?

【在 t****u 的大作中提到】
:
: 您老正好与他老相反,小奥加税也骂,减税也骂。。。。。。

avatar
g*n
9
配件也涨么?

Amazon.
Amazon

【在 S******n 的大作中提到】
: B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
: will all change on October 16th.
: 目前
: Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
: Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
: Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
: Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon

avatar
s*t
10
期待高手
avatar
B*e
11
托老,这回我听你
这人已经疯了,
没事就乱咬

【在 t****u 的大作中提到】
:
: 您老正好与他老相反,小奥加税也骂,减税也骂。。。。。。

avatar
S*n
12
要买D800的赶快先屯几个镜头。
avatar
z*n
13
这是面试题吗?还是实际工程问题?
单纯追求更高速度,只能牺牲空间。
基于这个前提:“同一个data,findIndices会被执行多次”
最简单暴力的办法:
提前预处理计算好所有两两组合的结果,你的例子里,
预处理完后,应该有一项长成这样:
[100, 157] - [0,3,5,7]
至于输入的(100, 200)怎么map到[100,157],这个trivial吧。
这样的话预处理大概是n^3logn的时间,查询是logn的。
上面做法空间大小是 unique(A)^2*n (~=O(n^3)),按lz的数据规模,大了点
那就只能考虑牺牲查询时间,节约空间和欲处理时间:
考虑建个segment tree吧(按你的例子):
[100, 300, 25, 123, 3, 157, 9, 103, 304]
排序后:
[3, 9, 25, 100, 103, 123, 157, 300, 304]
把上面这个数组建成segment tree,每个节点存对应range的坐标集合
类似:
(3...304)
[0,1,2,...,8]
/ \
(3...103) (123 ... 304)
[0, 2, 4, 6, 7] [1, 3, 5, 8]
/ \ / \
(3...25) (100...103) (123..157)(300..304)
....
这样查询100 200, 你直接在树里搜上下限,会取出来如下区间:
(100...103),(123..157),因为每个区间所携带的index集合已经是有序的,只要按集合
size从小到大merge,这样merge过程的复杂度渐近应该是O(n)的
总体预处理时间:nlogn, 查询时间lgn + n, 空间nlogn.
如果是面试,你自己的两个方案加上面的两个方案思考过程答一遍,即使它不是最优解
应该也能过了。
如果是工程,请用2楼的方案,直接扫一遍完事。
或者用我的方案1,找个分布式data pipeline引擎跑。
avatar
m*s
14
刚把14-24卖了, 赶紧得再进一个

Amazon.
Amazon

【在 S******n 的大作中提到】
: B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
: will all change on October 16th.
: 目前
: Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
: Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
: Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
: Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon

avatar
g*n
15
再涨就换门

【在 m*****s 的大作中提到】
: 刚把14-24卖了, 赶紧得再进一个
:
: Amazon.
: Amazon

avatar
d*k
16
是不是pentax涨的更快啊?
我有两头好久没有用了,我靠,我一看ebay和amazon价格,基本都翻倍了啊~

Amazon.
Amazon

【在 S******n 的大作中提到】
: B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
: will all change on October 16th.
: 目前
: Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
: Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
: Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
: Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon

avatar
S*n
17
已经买过镜头了的铁丝们正高兴着呢。。。

【在 t******e 的大作中提到】
: 可怜的铁丝们哪
avatar
G*Y
18
不要上当受骗

Amazon.
Amazon

【在 S******n 的大作中提到】
: B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
: will all change on October 16th.
: 目前
: Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
: Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
: Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
: Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon

avatar
N*D
19
这些是MSRP

Amazon.
Amazon

【在 S******n 的大作中提到】
: B&H先驱已经先涨了,Amazon and Adorama still have the old prices but this
: will all change on October 16th.
: 目前
: Nikon 70-200mm f/2.8 is $2,399.95 at B&H, currently $2,159.96 at Amazon.
: Nikon 24-70mm f/2.8 is $1,889.95 at B&H, currently $1,700.96 at Amazon
: Nikon 14-24mm f/2.8 is $1,999.95 at B&H, currently $1,781.76 at Amazon
: Nikon D7000 is $1,199.95 at B&H, currently $1,099.95 at Amazon

avatar
w*e
20
但是BH挂的就是MSRP
avatar
S*n
21
bestbuy.com 也是涨了价的价格。
avatar
f*k
22
14-24用得不多,70-200是要屯一个。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。