网易笔试牛牛找工作,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

相关推荐

每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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