leetcode-135. Candy

原创 2016年08月29日 21:43:29

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?

题意解析:

题目大概就是说有一群小孩,每个小孩有个得分,现在要给小孩子发糖,得分高的小孩应该比他旁边得分低的小孩得到的糖果要多,求问最少需要多少糖果。

最少的情况其实很简单,就是最低的人是1,比他高一点就+1,这道题难度是hard,可是我感觉只有easy,因为思路是直的,完全没拐弯,代码如下:

public class Solution {
    public int candy(int[] ratings) {
        if(ratings.length == 1){
            return 1;
        }
        int[] candys = new int[ratings.length];
        candys[0] = 1;
        for(int i = 1; i < ratings.length; i++){
            if(ratings[i] > ratings[i - 1]){
                candys[i] = candys[i - 1] + 1;
            }else{
                candys[i] = 1;
            }
        }
        for(int i = ratings.length - 2; i >= 0; i--){
            if(ratings[i] > ratings[i + 1] && candys[i] <= candys[i + 1]){
                candys[i] = candys[i + 1] + 1;
            }
        }
        int sum = 0;
        for(int x : candys){
            sum += x;
        }
        return sum;
    }
}

复杂度O(n),其实就是正向一次,反向一次。正向的时候默认是1,如果右边比左边高,就在原来的基础上+1,否则都是1。反向的时候,如果左边比右边高,而且左边糖果没有右边多,那左边的糖果就在右边的基础上+1。


结果也是在最快的那一组里面。别的算法我也想不到。不知道为什么有的人时间会那么慢。


【LeetCode】Candy 解题报告

There are N children standing in a line. Each child is assigned a rating value. You are giving cand...
  • ljiabin
  • ljiabin
  • 2014年09月04日 22:46
  • 4416

Alien Skin Eye Candy v7.x(眼睛糖果7)最新通用汉化补丁32/64位

Alien Skin Eye Candy v7.x(眼睛糖果7)主要应用对象包含各种设计任务,字体,标志,网页设计等,通过对自然现象的模拟提供各种现实的精致效果。眼睛糖果 的界面简单直观,轻松提高你使...
  • xwm0008
  • xwm0008
  • 2014年06月09日 11:12
  • 3169

TYVJ 清理垃圾

描述 Description     Candy家里总共有n个垃圾等待处理,每个垃圾对于Candy和飘飘乎居士处理的时间都是不同的,而且每个垃圾只需要一个人处理。当然,Candy和飘飘乎居士可以同时...
  • u013810072
  • u013810072
  • 2014年05月06日 17:16
  • 470

[LeetCode]Candy——分糖果问题

一、问题描述: There are N children standing in a line. Each child is assigned a rating value. You are...
  • CristianoJason
  • CristianoJason
  • 2016年04月27日 15:03
  • 609

135. candy 贪心算法

There are N children standing in a line. Each child is assigned a rating value. You are giving ca...
  • u012985132
  • u012985132
  • 2016年09月13日 20:29
  • 257

Candy 根据排名分糖果 @LeetCode

一些例子: 1 2 3 3 3  =》 8  因为candy数可以是 1 2 3 1 1 1 2 3 2 3 =》9  因为candy数可以是 1 2 3 1 2 思路: ...
  • hellobinfeng
  • hellobinfeng
  • 2013年12月23日 04:56
  • 5063

九度OJ 1145:Candy Sharing Game(分享蜡烛游戏) (模拟)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:248 解决:194 题目描述:     A number of students sit in ...
  • thudaliangrx
  • thudaliangrx
  • 2015年10月24日 12:43
  • 332

Candy 出去玩

【问题描述】 Candy 打算出去玩,出去玩肯定要选地方对不对,但是稀有和 XL 对景点的评价明显不 一样! 所以,Candy 很纠结地决定把这些景点按照评价来分个组。一共有 N...
  • HownoneHe
  • HownoneHe
  • 2016年09月23日 20:10
  • 290

笔试题之算法初识

这段时间一直沉浸在自己的工作和学习中,一个电话打破我的宁静的生活,竟然是通知我笔试的。还发来一套笔试题,打开一看,两道题就,都是我喜欢的算法题,于是便开始准备解决这两道题,使生活回归宁静。 请看题...
  • qq_29282475
  • qq_29282475
  • 2016年03月10日 18:37
  • 963

后缀数组 模板 (敲定)

打ATP
  • Clove_unique
  • Clove_unique
  • 2016年05月11日 13:57
  • 559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode-135. Candy
举报原因:
原因补充:

(最多只允许输入30个字)