网易笔试牛牛找工作,java代码通过40%,求解该如何优化

一直时间复杂度太高,求解该如何优化
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
BigInteger[] di = new BigInteger[n];
BigInteger[] pi = new BigInteger[n];
BigInteger[] ai = new BigInteger[m];
for (int i = 0; i < n; i++) {
di[i] = sc.nextBigInteger();
pi[i] = sc.nextBigInteger();
}
for (int i = 0; i < m; i++) {
ai[i] = sc.nextBigInteger();
}
for (BigInteger bigInteger : ai) {
BigInteger MaxSalary = getMaxSalary(bigInteger, di, pi);
System.out.println(MaxSalary);
}
}
public static BigInteger getMaxSalary(BigInteger ai,BigInteger[] di,BigInteger[] pi) {
BigInteger MaxSalary = BigInteger.ZERO;
for (int i = 0; i < di.length; i++) {
if (ai.compareTo(di[i]) >= 0 && MaxSalary.compareTo(pi[i]) < 0) {
MaxSalary = pi[i];
}
}
return MaxSalary;
}
}
#春招##笔试题目##实习#
全部评论
排序 + 二分
点赞 回复 分享
发布于 2018-03-27 21:51
工作按难度排序 创建一个辅助数组,a[i] = max(a[i - 1], works[i].p),表示小于等于当前难度的工作中,最高的利润 对输入的每个难度,二分寻找这个难度,输出最高利润
点赞 回复 分享
发布于 2018-03-27 21:54
这个题能描述一下不?
点赞 回复 分享
发布于 2018-03-27 22:56

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务