京东9.9笔试

这次编程题很简单,第一道求最大乘积,直接排序,然后从大到小遍历乘相邻两个数,如果差距大于k就跳过,记得用long,不然只能过80%。
第二题简单dp,dp[i]=min(dp[i-1],dp[i-2])+num[i]。
第三题有点难,暴力只能过20,要数学方法。推导出的公式是nums[i]*(n-i)*(i+1)*(i+2)/2。具体推导公式有点没精力写了,自己写的乱七八糟的草稿纸拿出来凑个图吧#京东笔试#
全部评论
我第一题咋用了long还是80。。第三题我想的是前缀和,但最后时间不够了,暴力过
点赞 回复 分享
发布于 2023-09-09 21:08 重庆
能帮忙看看为什么才20吗 const { readline, print } = require("@ip-algorithmics/codeforces-io"); function calculateResult(n, a) { const MOD = 1e9 + 7; let result = 0; let tmp = 0; for (let i = 0; i < n; i++) { tmp += (i + 1); result += (a[i] * tmp * (n - i) % MOD); result %= MOD; } return result; } let nums = readline(); let line = readline(); let arr = line.split(" ").map(Number); print(calculateResult(nums, arr));
点赞 回复 分享
发布于 2023-09-09 21:15 江苏
我记得有不能重复选,想问下这种情况该怎么处理呀
点赞 回复 分享
发布于 2023-09-09 21:27 北京

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
评论
5
收藏
分享
牛客网
牛客企业服务