给定一组条目,每个条目包含时间索引和int计数值, 即 课程录入 { 时间:INT 数: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 :(得分: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)
输出:
ans =
100