广联达4/27笔试
5.19更新 已收到offer
达子是真能处啊,有offer他是真发,还没去实习呢就拿到秋招offer了,蛮开心
————————————
广联达给我一种做银行笔试题的感觉,技术选择题20道,类似公务员行测的选择题40道,外加一道编程。
就讨论一下编程题吧,题目大概意思是有一个面试官,有m个面试者,每个面试者有一个想面试的时间段[start, end],然后问你面试官在[1, n]时间段内最多能面试多少个人。
大概思路就是贪心,将所有面试者的时间段按结束时间从小到大排序,结束时间一样的话按开始时间从小到大排。
排序完之后就遍历,贪心的选择下一个可行的时间段就行了。代码如下:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] times = new int[n][2];
for(int i = 0; i < n; i++){
times[i][0] = sc.nextInt();
}
for(int i = 0; i < n; i++){
times[i][1] = sc.nextInt();
}
Arrays.sort(times, (o1, o2) -> {
if(o1[1] == o2[1]){
return o1[0] - o2[0];
}else{
return o1[1] - o2[1];
}
});
int res = 1;
int end = times[0][1];
for(int i = 1; i < n; i++){
if(times[i][0] > end){
end = times[i][1];
res++;
}
}
System.out.println(res);
}
}
