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

投票
#京东##京东笔试##春招##23年春招##23届找工作##笔试##笔试经验#第一题送分题,第二题遍历即可。第三题没通过全部用例,卡住了,分享一下
输入一个数N,求数组大小为n, 数字范围为1~n数组的权值和。(权值代表数组最大值的数字的个数)
示例:2
输出:6
数组包括
[1,2]权值为1
[1,1]权值为2
[2,2]权值为2
[2,1]权值为1.
权值和6。
分享出来,看大家有没有好见解。
全部评论
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 四川
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 日本
M
点赞 回复 分享
发布于 2023-03-04 23:52 江苏
点赞 回复 分享
发布于 2023-03-04 23:45 广东
那个全过的大佬出来指导一下啊,这题咋做呢。
点赞 回复 分享
发布于 2023-03-04 22:41 山西

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
牛客92804383...:在他心里你已经是他的员工了
点赞 评论 收藏
分享
找个工作 学历是要卡的 要求是高的 技能不足是真的 实习经验是0的 简历无处可写是事实的 钱不好赚是真的 想躺平又不敢躺 也不甘心躺 怕自己的灵感和才华被掩埋甚至从未被自己发现 又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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