9.3---微众银行笔试第二题---捏泥巴人

题目描述:
输入一个n,代表数组长度
接下来输入一个数组nums,然后你可以任意给数组元素加值,加多少都行
问:最少加多少(总和),能够让数组没有重复元素

思路:

先排序

然后从第2个元素开始遍历到最后,只要这个元素小于等于上一个元素,就让它等于上一个元素+1(贪心),然后res+=(更新值减去原值)

代码:

#贪心
while(1):
    n = input().strip()
    if len(n)<=0:break
    n = int(n)
    line2 = input().strip()
    nums = [int(x) for x in line2.split(' ')]
    res = 0
    for i in range(1,n):
        if nums[i]<=nums[i-1]:
            res+=(nums[i-1]+1-nums[i])
            nums[i] = nums[i-1]+1
    print(res)

#晒一晒我的offer##webank##笔试#
全部评论
AK了吗
1 回复 分享
发布于 2023-09-03 22:11 广东
很巧妙,我是一点思路没有这道题
1 回复 分享
发布于 2023-09-03 22:35 重庆
我用队列也能做出来
1 回复 分享
发布于 2023-09-03 22:45 上海
我是这样做的: 我看有五个数,那就从1加到5,总和减去数组里五个数的总和,就直接出结果了hhh
1 回复 分享
发布于 2023-09-03 22:46 北京
顺带:这种贪心的思想我当时也没想出来,是后面学习别人的
点赞 回复 分享
发布于 2023-09-03 22:05 湖南
和我的想法差不多,但是只ac了部分
点赞 回复 分享
发布于 2023-09-05 19:36 湖北

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
helloWord大王:这时候hr来个转人工我就真绷不住了
点赞 评论 收藏
分享
3 4 评论
分享
牛客网
牛客企业服务