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在极端的情况下会更慢,因为结果要再排序。
请教有没有更快的方法?
实现 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在极端的情况下会更慢,因为结果要再排序。
请教有没有更快的方法?