题目背景: 那一年,这一年,青春散场,到毕业季,我们奔波着忙着找工作,来到招聘会上,看到黑压压的一大片人群.. 题目描述:毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。 假设现在有n个招聘会,每个招聘会都有个起止时间,时间由从招聘会第一天0点开始的小时数表示,n <= 1000 。 返回:最多参加的招聘会的个数n。 举个例子: 现在有3场招聘会,他们的起始时间为: 9-10 10-20 8-15 返回:2 友情提醒: 题目结束前在“我的英雄会”里查看挑战结果 对于英雄会或本题有任何反馈或意见,欢迎加入英雄会编程挑战交流QQ群:216133772,验证信息为你的账号昵称。
public static int forjob(int[] start,int[] end){
int[][] job = new int[start.length][2];
job[0][0] = start[0];
job[0][1] = end[0];
for(int i=1;i<job.length;i++){
int s = start[i];
int e = end[i];
for(int m=i;m>0;m--){
if(s<job[m-1][0]){
job[m][0] = job[m-1][0];
job[m][1] = job[m-1][1];
job[m-1][0] = s;
job[m-1][1] = e;
}else{
job[m][0] = s;
job[m][1] = e;
break;
}
}
}
TreeSet<Integer> ts = new TreeSet<Integer>();
int flag = 1;
int[] temp = new int[2];
for(int j=0;j<job.length;j++){
temp = job[j];
for(int m=j+1;m<job.length;m++){
if(temp[1]<=job[m][0]){
flag++;
temp = job[m];
}
}
ts.add(flag);
flag = 1;
}
return ts.last();
}