首页 > 试题广场 >

小红的区间增加

[编程题]小红的区间增加
  • 热度指数:243 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个数组,她每次可以任选一个区间,使得区间所有元素加1。小红想知道,使得数组中所有元素严格递增的最小操作次数是多少?

输入描述:
第一行输入一个正整数n,代表数组的元素数量。
第二行输入n个正整数a_i,代表数组的元素。
1\leq n \leq 10^5
1\leq a_i \leq 10^9


输出描述:
一个整数,代表最小的操作次数。
示例1

输入

3
3 2 4

输出

2

说明

一种合法的操作如下:
第一次选择区间[2,2],数组变成[3,3,4]。
第二次选择区间[2,3],数组变成[3,4,5],满足要求。
请注意,这里的区间指选了第几个数。例如区间[2,2]代表选了第二个数,区间[2,3]代表选了第二个和第三个数。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        long [] array = new long[n];
        for (int i = 0; i < n; i++) {
            array[i] = in.nextLong();
        }

        long res = 0;
        for (int i = 1; i < n; i++) {
            if (array[i] <= array[i - 1]) {
                res += array[i - 1] - array[i] + 1;
            }
        }
        System.out.println(res);
    }
}
发表于 2023-03-16 16:47:37 回复(0)

问题信息

难度:
1条回答 1728浏览

热门推荐

通过挑战的用户

小红的区间增加