135. Candy(dp)
来源:互联网 发布:nginx反向io代理 编辑:程序博客网 时间:2024/05/11 04:02
https://leetcode.com/problems/candy/discuss/
题目:一队小朋友排成行,并且分出等级,每个小朋友至少要有一块糖,且如果一个小朋友的等级高于左边或者右边的小朋友,那它的糖就要比他们多。 求最少需要多少块糖可以满足这种要求。
思路:可以先给每个小朋友分一块糖,然后从前往后遍历一次,确保每个人如果等级比前一个人高,那么所得的糖果数就是前一个人的基础上再加1个。 但是这样还不能满足要求,因为有可能排在身后且等级更低的那一个人糖果数不少于自己。 其实这种情况很容易就可以解决了,只要从后往前在遍历一次,类似从前往后遍历,从后往前就要确保在排在前面一个而且等级更高的那个小朋友得到的糖果比当前这个位置的糖果数多1.
这样两次遍历以后就可以得出每个小朋友的糖果数了,最后只需要把每个小朋友的糖果数全部加起来就可以得到最小需要的糖果总数了。时间复杂度为O(n)。
class Solution {public: int candy(vector<int>& ratings) { int len=ratings.size(),a=0; int dp[len]; dp[0]=1; for(int x=1;x<len;x++) dp[x]=ratings[x]>ratings[x-1]?dp[x-1]+1:1; for(int x=len-2;x>=0;x--) dp[x]=ratings[x]>ratings[x+1]?max(dp[x+1]+1,dp[x]):dp[x]; for(int x=0;x<len;x++) a+=dp[x]; return a; }};
阅读全文
0 0
- 135. Candy(dp)
- 【数组&DP】Candy
- DP - hdu5291 Candy Distribution
- leetcode---candy---dp
- LeetCode 135. Candy(糖果)
- 135.Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 135. Candy
- 请编程计算出所有的水仙花数。
- centos7安装python3及其配置pip(建立软连接)
- Qt之QFileIconProvider(根据扩展名获取文件图标、类型)
- ajax与jsonp跨域的本质原理
- unity/C#中扩展方法类
- 135. Candy(dp)
- redis分布式锁
- 深入浅出之时间线(一)
- redis分布式锁实现
- sd卡烧录系统后容量下降解决办法
- Qt之根据扩展名获取文件图标、类型
- 多线程下载httpurlConnection
- 普通二极管伏安特性和肖特基二极管电压电流特性
- 【观察】联想数据中心业务整体布局见成效 背后的动能和势能