滴滴笔试

4.10-滴滴笔试情况
第一题:ac,贪心算法,根据
第二题:36%,不会写
int[][] arr = new int[n][2];
Arrays.sort(arr, Comparator.comparingInt(o->o[0]));
int time = 0;
time += arr[0][0];
time += arr[0][1];
for (int i = 1; i < n; i++) {
if (arr[i][0] <= time) {
time += arr[i][1];
} else {
time = arr[i][0];
time += arr[i][1];
}
}
System.out.println(time);

#滴滴##笔经#
全部评论
第二题TLE了 18% 直接枚举以每个点为基准然后求符合斜率的点的最大值 不知道有啥更好的解法了 难受
点赞 回复 分享
发布于 2021-04-10 21:49
啥呀 ,第一题题目是什么
点赞 回复 分享
发布于 2021-04-10 21:56
第二题~ class Node{     public int waitTIme;     public int excTime;     public int in ; } public class Main2 {   public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  List<Node> wait =new LinkedList<>();  LinkedList<Node> exec  =new LinkedList<>();  int size = scanner.nextInt();         for (int i = 0; i < size; i++) {  Node node = new Node();  node.waitTIme = scanner.nextInt();     node.excTime = scanner.nextInt();   wait.add(node);         }  wait.sort(Comparator.comparingInt(a -> a.waitTIme));         int time = 0;  while (wait.size() != 0 || exec.size() != 0) {             time++;     for (int i = 0; i < wait.size(); i++) {     Node node = wait.get(i);         if (time >= node.waitTIme) {                     wait.remove(node);    node.in = time;                     exec.add(node); }   }  Node work = exec.peekFirst(); if (work != null) {  if (time - work.in >= work.excTime) {     exec.pop();    }   }   }         System.out.println(time);     } }
点赞 回复 分享
发布于 2021-04-10 22:00

相关推荐

点赞 评论 收藏
分享
1 2 评论
分享
牛客网
牛客企业服务