网易笔试牛牛找工作,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
这个题能描述一下不?
点赞 回复 分享
发布于 2018-03-27 22:56
工作按难度排序 创建一个辅助数组,a[i] = max(a[i - 1], works[i].p),表示小于等于当前难度的工作中,最高的利润 对输入的每个难度,二分寻找这个难度,输出最高利润
点赞 回复 分享
发布于 2018-03-27 21:54

相关推荐

07-22 11:07
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务