leetcode:candy

xiaoxiao2021-02-28  111

题目:

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

Each child must have at least one candy. Children with a higher rating get more candies than their neighbors.

What is the minimum candies you must give?

   //题意:N个孩子站成一排,每个孩子分配一个分值。给这些孩子派发糖果,满足如下要求:         //每个孩子至少一个         //分值更高的孩子比他的相邻位的孩子获得更多的糖果         //求至少分发多少糖果?

代码如下:

import java.util.*; public class Solution {     public int candy(int[] ratings) {              if (ratings==null||ratings.length==0)         {return 0;}         int n = ratings.length;         int[] v = new int[n];         int sum =0;         //初始,每个孩子至少有一颗糖         Arrays.fill(v,1);         //从左向右扫描,分值大的增加一个糖果         for(int i=1;i<n;i++){             if(ratings[i]>ratings[i-1])                {v[i]=v[i-1]+1;}         }         //从右向左扫描,分值大的多一个糖果         for(int i=n-1;i>0;i--){             if(ratings[i]<ratings[i-1]&&v[i]>=v[i-1])                 {                 v[i-1]=v[i]+1;             }              sum+=v[i];         }         sum +=v[0];         return sum;     } }

转载请注明原文地址: https://www.6miu.com/read-61356.html

最新回复(0)