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 }

    笔记:

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

  • 相关阅读:
    axios取消请求
    echarts常用图表配置
    Vue指令限制输入框输入整数小数
    小程序商品飞入购物车组件
    webpack按测试和生产环境进行编译
    地图画线添加标签
    vue-element-admin 动态侧边栏
    html2canvas 和浏览器打印
    echarts 指定某段曲线颜色
    列出表结构
  • 原文地址:https://www.cnblogs.com/john1015/p/13696668.html
Copyright © 2011-2022 走看看