假设我有一份人员名单,其中列出了他们在过去发生的事件中的到达和离开时间。
我的任务是找出在任何时候参加活动的最大人数?我没有得到查询时间。
ai = 人 i 的到达时间
di = 人 i 的出发时间
我有一个列表,如 (a1,d1)、(a2,d2)、(a3,d3).... (an,dn)... 它不在数据库中。
在这个问题中,我们可以看到事件的最大人数是 3。
所以在这个例子中。对于大小为 3 的问题,我们有五个解决方案。{b,d,e}, {j,h,i}, {c,b,a}, {e,g,f}, {g,h,f} . 我只想知道3号。
我的方法:
我。创建一个大小 = 上次出发时间 - 首次到达时间的数组。并不断增加该数组的计数。
ii. 我试图按人们的开始时间对他们进行排序。并继续跳到下一个人的开始时间。在那之后我迷路了。我该如何进行。
谢谢
@ypnos : //根据时间戳对数据进行排序。
int count = 0;
int max = 0
char [] arr = {a1, a2, d1, a3, a4, d3, d2, } like this..
for(int i =0; i < arr.length; i++)
{
if(arr[i].startswith('a') )
{
count++;
if(count > max)
{
max = count;
}
}
else
{
count--;
}
}