博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode Candy
阅读量:4560 次
发布时间:2019-06-08

本文共 2447 字,大约阅读时间需要 8 分钟。

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.
package com.bupt.acm.leetcode;import java.util.Arrays;public class Candy {    /**     * 本算用于求解当等级比其高时值加倍     * @param ratings     * @return     */    public int sum=0;    public int candy(int[] ratings){                if(ratings==null||ratings.length==0){            return 0;        }        int min=ratings[0];        int length=ratings.length;        if(ratings.length==1){            return 1;        }                int[] score=new int[length];        for(int i=0;i
ratings[i]){ min=ratings[i]; } } for(int i=0;i
=ratings[now]){ return 1; }else{ return computeCandy(ratings, beg-1, beg, now,score)+1; } }else if(now==0){
//表示第一个元素 if(ratings[now]<=ratings[end]) return 1; else{ return computeCandy(ratings, now, end, end+1,score)+1; } }else{
//表示其他元素 int a=ratings[beg],b=ratings[now],c=ratings[end]; if(a==b&&b==c){
//a=b=c return 1; }else if(b>a&&b>c){
//a
c return Math.max(computeCandy(ratings, beg-1, beg, now,score)+1, computeCandy(ratings, now, end, end+1,score)+1); }else if(b>a&&b<=c){
// a<=c return computeCandy(ratings, beg-1, beg, now,score)+1; }else if(b<=a&&b>c){
//a

 上述算法最后一个样例超时,

新算法:

初始化所有小孩糖数目为1,从前往后扫描,如果第i个小孩等级比第i-1个高,那么i的糖数目等于i-1的糖数目+1;从后往前扫描,如果第i个的小孩的等级比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1

public int candy2(int[] ratings){        if(ratings==null||ratings.length==0)            return 0;        if(ratings.length==1)            return 1;        int sum=0;        int length=ratings.length;        int[] scores=new int[length];        for(int i=0;i
ratings[i-1]){ scores[i]=scores[i-1]+1; } } for(int i=length-1;i>0;i--){ if(ratings[i-1]>ratings[i]){ if(scores[i-1]<=scores[i]){ scores[i-1]=scores[i]+1; } } } for(int i=0;i

 

转载于:https://www.cnblogs.com/csxf/p/3645606.html

你可能感兴趣的文章
HoloLens开发手记 - Unity之Keyboard input 键盘输入
查看>>
关于日历
查看>>
荣品KING3288开发板升级啦!
查看>>
系统产生死锁的四个必要条件
查看>>
初心易得,始终难守
查看>>
北京集训DAY4
查看>>
编译 ACE
查看>>
JDBC(1)
查看>>
《程序是怎样跑起来的》第五章
查看>>
配置SSH单向无密码访问
查看>>
深入浅出Docker(五):基于Fig搭建开发环境
查看>>
ubuntu apt 代理设置
查看>>
第四章—变量,作用域和内存问题(二)
查看>>
MySQL日期处理函数_20160922
查看>>
Mysql存储引擎以及锁机制
查看>>
linux 操作
查看>>
Python—语法基础(6) 列表类型及操作
查看>>
右键菜单没有新建文本文件了,怎么办?
查看>>
npm run dev后sass报错* !!vue-style-loader!css-loader?{“sourceMap”:true}......
查看>>
mongodb数据库---本地集合拷贝克隆、筛选剔除(转并学习)
查看>>