我们正在对呼叫中心进行密度报告。 结果必须显示为表格, 每天以一行显示该天最大“ 强” 同时 < 强” / 强” 活动电话数 。
我们正在UI背后建立lib。 合同具体规定了当天的通话次数和两个整数阵列, 一个是起始时间, 一个是每次通话的结束时间, 例如 :
一天只接到两个电话:一个从20到30,另一个从10到20,同时拨打最多为1次。
另一方面,另外一天还收到两通电话,一通从10通到45通,另一通从15通到40通,然后最多同时接到2通。
网络服务合同是这个
public static int GetMaxDensity(int N, int[] X, int[] Y)
数据是这样的(假设当日收到3通电话)。第一个10到25次,第二个12到30次,第三个20到23次。
N = 3,
X = {10, 12, 20}
Y = {25, 30, 23}
返回必须是:3。
我推行了这个解决方案:
public static int GetMaxDensity(int N, int[] X, int[] Y)
{
int result = 0;
for (int i = 0; i < N; i++)
{
int count = 0, t = X[i];
for (int j = 0; j < N; j++)
{
if (X[j] <= t && t < Y[j])
count++;
}
result = Math.max(count, result);
}
return result;
}
当调用次数高达1000次(周末),但工作日内,这个数目相当大,计算得那么长( & gt; 5 分钟), 这非常管用。 现在原因可能是我的解决方案是用两个嵌套周期,但我对复杂的算法没有多少经验,所以我的问题是:
鉴于我只需要同时打电话的最多次数(而不是时间和打电话者),如果有的话,这可以是一个更快的计算方法。