zoukankan      html  css  js  c++  java
  • 分糖果

    题目:

    有N个小朋友站在一排,每个小朋友都有一个评分
    你现在要按以下的规则给孩子们分糖果:
    • 每个小朋友至少要分得一颗糖果
    • 分数高的小朋友要他比旁边得分低的小朋友分得的糖果多
    你最少要分发多少颗糖果?

    示例:

    输入:[1, 2, 2]    输出:4

    代码:

     1 import java.util.*;
     2 public class Solution {
     3     /**
     4      * 
     5      * @param ratings int整型一维数组 
     6      * @return int整型
     7      */
     8     public int candy (int[] ratings) {
     9         // write code here
    10         int count = 0;
    11         int[] suger = new int[ratings.length];
    12         Arrays.fill(suger,1);
    13         //从左至右依次比较,保证比前一个分数低的糖果多
    14         for( int i = 1; i < ratings.length; i ++ ) {
    15             if( ratings[i] > ratings[i - 1] )
    16                 suger[i] += suger[i - 1];
    17         }
    18         //从右至左依次比较,保证分数大的,糖果多
    19         for( int i = ratings.length - 1; i > 0; i -- ) {
    20             count += suger[i];
    21             if( ratings[i] < ratings[i - 1] && suger[i - 1] <= suger[i] )
    22                 suger[i - 1] = suger[i] + 1;
    23         }
    24         count += suger[0];
    25         return count;
    26     }
    27 }

    笔记:

      进行两次相反方向的比较。

  • 相关阅读:
    python 随机字符串
    Ajax
    Django (Form)
    Django (项目)
    Django (二)
    Django (一)
    Django 学生管理系统
    地理坐标系 与 投影坐标系
    shapefile
    图表绘制工具--Matplotlib 3
  • 原文地址:https://www.cnblogs.com/john1015/p/13696668.html
Copyright © 2011-2022 走看看