链接:https://www.nowcoder.com/questionTerminal/09066b2c010f4218adb1a1db42dbb236
来源:牛客网
公园里有N个花园,初始时每个花园里都没有种花,园丁将花园从1到N编号并计划在编号为i的花园里恰好种A_i朵花,他每天会选择一个区间[L,R](1≤L≤R≤N)并在编号为L到R的花园里各种一朵花,那么园丁至少要花多少天才能完成计划?
输入描述:
第一行包含一个整数N,1≤N≤10^5。
第二行包含N个空格隔开的整数A_1到A_N,0≤A_i≤10^4。
输出描述:
输出完成计划所需的最少天数。
示例1
输入
5
4 1 8 2 5
输出
14
思路:题目要求是最少需要的天数,这种题可以看成是股票类型的题目 也就是第一想法是贪心算法
对于题目给出的例子 4 1 8 2 5
我们仔细考虑一下 :① 3 0 7 1 4 ② 3 0 6 0 3
结果就是3 + 6 + 3 + 2
我们可以看到 每个数就是找出右边比他小的第一个数即可,特殊情况就是最后一个数 那他的大小无关紧要 他一定是自身的大小
因为无论左边的数有比他大 比他小还是一样大 最后加的结果都是他自身
按照贪心的思想 每一步都取到最小
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i< n; i++){
arr[i] = sc.nextInt();
}
int sum = 0;
for(int i = 0; i < n - 1; i++){
if(arr[i] > arr[i+1])
sum+= arr[i] - arr[i + 1];
}
System.out.println(sum + arr[n-1]);
}
}