京东算法2023/3/4机试编程题目

投票
#京东##京东笔试##春招##23年春招##23届找工作##笔试##笔试经验#第一题送分题,第二题遍历即可。第三题没通过全部用例,卡住了,分享一下
输入一个数N,求数组大小为n, 数字范围为1~n数组的权值和。(权值代表数组最大值的数字的个数)
示例:2
输出:6
数组包括
[1,2]权值为1
[1,1]权值为2
[2,2]权值为2
[2,1]权值为1.
权值和6。
分享出来,看大家有没有好见解。
全部评论
那个全过的大佬出来指导一下啊,这题咋做呢。
点赞 回复 分享
发布于 2023-03-04 22:41 山西
点赞 回复 分享
发布于 2023-03-04 23:45 广东
M
点赞 回复 分享
发布于 2023-03-04 23:52 江苏
mark一下,首先全排列就是N^N,那么对于N,出现在第一位的次数就是N^(N-1),一共会出现1-N,因此最大值为N的时候,权值和为N*N^(N-1),同理,当最大值为N-1的时候,N*(N-1)^(N-1),所以结果就是N*(N^(N-1)+(N-1)^(N-1).....1^(N-1)), 比如2就是2*(2^1+1^1)2*(2+1)为6,3就是3*(3^2+2^2+1^2) 3*(9+4+1)为42
点赞 回复 分享
发布于 2023-03-06 01:48 日本
1. 首先单独考虑最大值为1.此时只能是[1, 1, 1,...,1](共n个),其权值为n。 2. 下面考虑最大值不为1。枚举最大值为max,枚举其出现次数为cnt(显然,此时cnt即为权值) --- 2.1 首先,从n个位置中选择cnt个位置填入当前最大值max,这是一个组合问题,其次数为C(n, cnt),记为t1 --- 2.2 然后,考虑剩余的n-cnt个位置。显然每个位置可以填入1~max-1共max-1种可能的取值。因此为pow(max-1,n-cnt),记为t2 --- 2.3 上述两步之间是乘法关系,对总答案有cnt*t1*t2的贡献,把全部加到最终答案上即可。 3. 综合1,2,得到解。复杂度为O(n^2),由于带模,需要用杨辉三角或乘法逆元提前处理一下组合数。
点赞 回复 分享
发布于 2023-03-06 16:57 四川

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务