独特橡皮泥士兵 | 豆包MarsCode AI刷题

134 阅读1分钟

问题描述

小R有一组橡皮泥士兵,它们的大小各不相同或非常接近。为了让每个士兵都更具独特性,小R希望确保所有士兵的大小都不相同。小R可以通过增加某些士兵的大小来实现这一目标。每次操作可以给某个士兵加一单位橡皮泥,以增加其大小。

给定士兵的数量n和每个士兵当前的大小的数组a,计算为了使所有士兵的大小都不同,至少需要增加多少单位橡皮泥。


测试样例

样例1:

输入:n = 5 ,a = [1, 1, 2, 3, 3]
输出:5

样例2:

输入:n = 6 ,a = [4, 4, 4, 5, 5, 6]
输出:11

样例3:

输入:n = 7 ,a = [10, 20, 10, 30, 40, 30, 20]
输出:3

由于操作后每个士兵的数字不一样,我们可以使用set来记录这些数字。对每次添加进去的数组进行判断,如果存在就自增到符合条件位置,同时记录操作次数。

public class 独特橡皮泥士兵468 {
    public static int solution(int n, int[] a) {
        Set<Integer> set=new HashSet<>();
        int res=0,temp;
        for (int i = 0; i < a.length; i++) {
            temp=a[i];
            while(set.contains(temp)){
                temp++;
                res++;
            }
            set.add(temp);
        }
        return res;
    }
}