首页 > 试题广场 >

牛牛打怪

[编程题]牛牛打怪
  • 热度指数:420 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给出一个长度为n的数组DEF,第i个元素为DEF[i]。
第i次操作可以选择一个值小于i的元素并使之变为0,若没有小于i的元素可以认为一次空操作,次数也是增加
求使数组元素全为0最少的操作数。
示例1

输入

2,[7,3]

输出

7

说明

第3次操作使值为3的元素变为0,第7次操作使值为7的元素变为0。所以最少操作7次。

示例2

输入

3,[4,5,5]

输出

6

说明

第4次操作使值为4的元素变为0,第5次操作使值为5的元素变为0,第6次操作使值为5的元素变为0,所以最少操作6次


备注:
对于的数据:
public int Minimumdays(int n, int[] DEF) {
    // write code here
    Arrays.sort(DEF);
    int op = DEF[0];
    for (int i = 0; i < DEF.length; i++) {
        if (DEF[i] > op) {
            op++;
            i--;
        } else {
            op++;
        }
    }
    return --op;
}

发表于 2021-10-07 18:08:29 回复(0)
public int Minimumdays (int n, int[] DEF) {
        // write code here
        if (n == 0 || DEF == null) {
            return 0;
        }
        
        Arrays.sort(DEF);
        int count = DEF[n-1];
        int space = 0;
        int need = 0;
        
        for (int i = DEF.length - 1; i > 0; i--) {
            space += DEF[i] - DEF[i-1] - 1;
            if (space < 0) {
               count -= space;
               space = 0;
            } ;
        }
        
        return count;
    }
发表于 2021-04-14 20:09:25 回复(0)