主页 > 开源代码  > 

day-23分发糖果

day-23分发糖果

参考了答案。。。。。。

思路:所有位置的糖果数应该满足左规则和右规则 左规则:如果ratings[i]>ratings[i-1],则应该比左边多一颗糖果 右规则:如果ratings[i]>ratings[i+1],则应该比右边多一颗糖果 最终糖果数为ans[i]=Math.max(left[i],right[i])

code:

class Solution { public int candy(int[] ratings) { int n=ratings.length; int left[]=new int[n]; int right[]=new int[n]; int ans[]=new int[n]; Arrays.fill(left,1); for(int i=1;i<n;i++){//满足左规则 if(ratings[i]>ratings[i-1]){ left[i]=left[i-1]+1; } } for(int i=0;i<n;i++){ right[i]=left[i]; } for(int i=n-2;i>=0;i--){//满足右规则 if(ratings[i]>ratings[i+1]){ right[i]=right[i+1]+1; } } for(int i=0;i<n;i++){ ans[i]=Math.max(left[i],right[i]); } int total=0; for(int i=0;i<n;i++){ total+=ans[i]; } return total; } }
标签:

day-23分发糖果由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“day-23分发糖果