zoukankan      html  css  js  c++  java
  • Candy

    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?

    class Solution {
    public:
    //two pass, one from the left, other from the right. the left one find the least number of candy that needed according the the left side
    //right one find the least number of candy that needed according to the right side.
        int candy(vector<int>& ratings) {
            if (ratings.empty())
                return 0;
            if (ratings.size() == 1)
                return 1;
            int n = ratings.size();
            vector<int> candy(n,1);
            for(int i=1; i < n; i++){
                if (ratings[i] > ratings[i-1])
                    candy[i] = candy[i-1] + 1;
            }
            int total = candy[n-1];
            for(int i=n-2; i>=0; i--){
                if (ratings[i] > ratings[i+1])
                    candy[i] = max(candy[i], candy[i+1]+1);
                total += candy[i];
            }
            return total;
        }
    };
  • 相关阅读:
    js交互数据
    js字符串操作
    js数组操作
    hasattr ,setarrt, getattr属性
    装饰器
    redis数据库安装
    ubuntu中mysql数据库安装与删除
    装换器
    jinjia2
    Laravel框架与ThinkPHP框架的不同
  • 原文地址:https://www.cnblogs.com/sherylwang/p/5831086.html
Copyright © 2011-2022 走看看