广联达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); } }