描述
一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:
- 每个孩子不管得分多少,起码分到一个糖果。
- 任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)
import java.util.*;
public class Solution {
/**
* pick candy
* @param arr int整型一维数组 the array
* @return int整型
*/
public int candy (int[] arr) {
// write code here
int[] candy = new int[arr.length];
//首先默认每人分一块糖
for(int i = 0;i<arr.length;i++){
candy[i] = 1;
}
//从左到右 如果左边分数小于右边分数;右边糖果就比左边多分一个
for(int i = 0 ;i<arr.length-1;i++){
if(arr[i]<arr[i+1]){
candy[i+1] = candy[i]+1;
}
}
//从右到左 如果右边分数小于左边分数;并且右边糖果数大于左边糖果
for(int i = arr.length-1 ;i>0;i--){
if(arr[i]<arr[i-1]&&candy[i]>=candy[i-1]){
candy[i-1] = candy[i]+1;
}
}
int sum = 0;
for(int i = 0 ;i<=arr.length-1;i++){
sum +=candy[i];
}
return sum;
}
}
网友评论