赞
踩
问题描述:老师想给孩子们分发糖果,由N个孩子占城了一条直线,老师会根据每个孩子的表现,预先给他们评分,你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配一个糖果,评分更高的孩子必须比他两侧邻位孩子获得更多的糖果,这样下来老师需要准备多少颗糖果,
贪心算法求解:左右两次遍历,第一次遍历从左往右,要是右边比左边高,则右边增加一个糖果,第二次遍历从右往左,如果左边比右边高,则左边增加一个糖果,
- public numberCandy(int []nums)
- {
- nums[0]=1;
- for(int i=1;i<nums.length;i++)
- {
- if(nums[i]>nums[i-1])
- {
- nums[i]=nums[i-1]+1;
- }else
- {
- if(nums[i-1]==1)
- {
- nums[i]=1;
- }else
- {
- nums[i]=nums[i-1]+1;
- }
- }
- }
- for(int i=nums.length-2;i>=0;i--)
- {
- if(nums[i]>nums[i+1]){nums[i]=nums[i-1]+1;}
-
- }
- int total=0;
- for(int num:nums)
- {
- total+=num;
- }
- return total;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。