题目链接:https://www.lanqiao.cn/problems/384/learning/
import java.util.Scanner;
public class 积木大赛 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] nums = new int[n];
for(int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
//这道题,转化思考思路,题目让累积,我们把所有元素减为0 即可。但是怎么减次数最少。
//ans初始值为数列第一个元素。
//每个元素都和前一个元素比较,如果后面的大于前面的则要加上差值
//第一个相当于和0 时做差值。
int ans = nums[0];
for(int i = 0; i < n - 1; i++) {
if(nums[i] < nums[i + 1])
ans = ans + (nums[i + 1] - nums[i]);
}
System.out.println(ans);
}
}
本文介绍了一种解决积木大赛问题的算法实现方法。通过将问题转化为使所有元素减为0的过程,找到使操作次数最少的策略。核心思路是利用序列中元素间的差值进行累加,最终得出最小的操作次数。
1044

被折叠的 条评论
为什么被折叠?



