bm95最小化奖励问题(分糖果问题)
描述
一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:
1. 每个孩子不管得分多少,起码分到一个糖果。
2. 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)
给定一个数组 arrarr 代表得分数组,请返回最少需要多少糖果。
要求: 时间复杂度为 O(n)O(n) 空间复杂度为 O(n)O(n)
数据范围: 1 \le n \le 1000001≤n≤100000 ,1 \le a_i \le 10001≤ai≤1000
示例1
输入:
[1,1,2]
返回值:
4
示例2
输入:
[1,1,1]
返回值:
3
import java.util.*;
public class Solution {
public int minOfAward(int[] arr){
int[] count=new int[arr.length];
Arrays.fill(arr,1);
int sum=0;
for(int i=1;i<arr.length;i++){
if(arr[i-1]<arr[i])
count[i]=count[i-1]+1;
}
for(int j=arr.length-1;j>0;j--){
if(arr[j]<arr[j-1])
count[j-1]=Math.max.(count[j]+1,count[j]-1);
}
for(int i:count)
sum+=i;
return sum;
}
}
posted on 2022-09-20 00:21 somedieyoung-navi 阅读(29) 评论(0) 编辑 收藏 举报