京东8.2笔试 Java卷 算法题分享/求解答

题1:给n个任务。 a[i] 代表完成任务需要时间 和 b[i]表示每等待 1 分钟就需要多花b[i]时间

例子:

2

1 1

2 5

最短时间:先完成 任务2,用时 2min,再完成任务1,用时(1 + 1*2) = 3分钟,总用时间5min

解法,使用PriorityQueue排序即可

PriorityQueue<int[]> pq = new PriorityQueue<>( (a, b) ->{

return a[0]*b[1] - b[0]*a[1];//其实就是给每个任务排序一下,贪心地排序,让等待时间影响最小的最后完成

} )

题2:从(0,0)出发,只能往上、左、右走,要求一条路径中不能有重复坐标。求n步能走出的方案数。n最大到1e9。对1e9+7取模。

个人想法:手动画图推导一下可以得出当n = 2, 3, 4时答案是7,15,31。盲猜一手2^(n+1) - 1。

写了个快速幂,喜提18%准确率。

#笔试##京东#
全部评论
佬我这儿显示笔试中但是没收到笔试链接这是正常的吗
点赞 回复 分享
发布于 08-03 16:07 北京
蹲蹲解法
点赞 回复 分享
发布于 08-02 21:41 广东

相关推荐

评论
点赞
3
分享

创作者周榜

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