阿里測評2018.7.18
阿新 • • 發佈:2019-02-17
題目:
現在很多家長都會送小孩子去培訓中心學習舞蹈,
有一次舞蹈培訓中心考試,因為小孩子要哄著才能更喜歡學,
所以老師給孩子們準備了小貼紙獎勵孩子,
考試結束以後孩子們按照大小個站成一排,老師按照順序給孩子們
發小貼紙,每個孩子都會至少得到一個小貼紙,因為是按照大小個
站成一排的,所以相鄰的孩子成績略有高低,為了鼓勵相鄰孩子
向成績好的孩子學習,成績高的孩子會比成績弱的孩子得到的小貼紙多,
請問需要多少小貼紙發給孩子們?
思路:首先定義一個數組,記錄每個人得到的糖果,然後逐個遍歷等級陣列。先判斷第i個等級和i+1等級,接著判斷與i-1.具體程式碼如下:
import java.util.*;
class Solution
{
public int candy(int[] ratings)
{
if(ratings==null || ratings.length==0)
return 0;
int len=ratings.length;
int num=0;
int[] candy=new int[len];
Arrays.fill(candy,1);//把candy的元素初始化為1;
for(int i=0;i<len;i++)
{
if(i!=len-1 && ratings[i]>ratings[i+1 ] && candy[i]<=candy[i+1])
{
candy[i]=candy[i+1]+1;
}
if(i>0 && ratings[i]>ratings[i-1] && candy[i]<=candy[i-1])
{
candy[i]=candy[i-1]+1;
}
}
for(int i=0;i<len ;i++)
num+=candy[i];
return num;
}
}