2014-09-26 58 views
1

给定一组条目,每个包含一个时间索引和INT计数值, 即 类条目 { 时间:整数 计数:整数 }查找总计数最高的间隔?

编写一个函数,将给予的时间间隔最高计数在一起,

即 如果我们有条目

100, 2 
100, 1 
110, 10 
200, 4 
1000, 3 
1200, 8 

,我们跑了类似

int highestInterval(int interval_range) 
highestInterval(50) 

它会返回100,因为在100-150,你数2,1,和10

我得到了一个O代表它(N^2)的解决方案,但我认为这是一个更好的解决方案。我认为这可能与间隔桶的预处理有关,但我无法弄清楚解决方案。

+0

为了这个,我认为简单的循环为O(n)。我不会发布代码,因为它似乎是howework =) – Hotted24 2014-09-26 08:28:43

回答

0

看来你已经使用了两个for循环,所以它只是一个改进的问题。

这里去一个可能的解决方案:

CODE:

raw_data=[100,2; 
100,1; 
110,10; 
200,4; 
1000,3; 
1200,8]; 
[max_val,indx]=max(cell2mat(arrayfun(@(A) sum(raw_data(abs(raw_data(A,1)-raw_data(:,1))<50,2)),1:size(raw_data,1),'UniformOutput',false))); 
raw_data(indx,1) 

OUTPUT:

ans = 

    100