(动态规划)最小分糖果问题
2017-02-05 10:14
225 查看
题目:
题目分析:这个题目其实就是简单的遍历问题。一个打乱的数组,每个数字都有一个特定的属性值,相邻两个数字大的数字比小的数字的属性值大。我们可以一次遍历 搞定,不过有点繁琐;这里我先从左边一次遍历处理大的值,然后右边遍历一次处理大的值(类似处理小的值),这样比较清晰。
代码:
有N个孩子站在一排。 每个孩子被分配一个评分值。 你给这些孩子的糖果满足以下要求: 每个孩子必须有至少一个糖果。 评分较高的孩子比他们的邻居获得更多的糖果。 你必须给的最低糖果是什么?
题目分析:这个题目其实就是简单的遍历问题。一个打乱的数组,每个数字都有一个特定的属性值,相邻两个数字大的数字比小的数字的属性值大。我们可以一次遍历 搞定,不过有点繁琐;这里我先从左边一次遍历处理大的值,然后右边遍历一次处理大的值(类似处理小的值),这样比较清晰。
代码:
class Solution { public: int candy(vector<int> &ratings) { int len = ratings.size(); if (len == 1) return 1; //从左边遍历 升序 找到大的就加1 vector<int> res(len, 1); int sum = 0; for (int i=0; i<len-1; i++){ if (ratings[i+1] > ratings[i]) res[i+1] = res[i]+1; } //在从右边遍历 升序 找到大的 加1 //两次遍历类似于一次遍历两次判断。这样比较清晰 for (int j=len-1; j>0; j--){ if (ratings[j-1] > ratings[j] && res[j-1]<=res[j]) res[j-1] = res[j]+1; } for (int i=0; i<len; i++){ sum += res[i]; } return sum; } };
相关文章推荐
- HUD1203——I NEED A OFFER!(背包问题,最小值的动态规划)
- 动态规划问题系列---Minimum Path Sum(路线上元素和的最小值)
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
- 动态规划系列问题-最小编辑代价
- 编码-京东实习笔试编程题-糖果问题-动态规划
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
- Cheapest Palindrome - 最小代价构造回文 动态规划
- 最小公倍数与最大公约数问题(NOIP竞赛原题)
- 关于建立最小硬盘版LINUX的问题
- SQLServer游标简单应用(求分组最小值问题)
- 1403高精度整数去位去最小问题
- CSS Div 最小高度在IE 6 和IE 7中的兼容性问题
- 动态规划解决矩阵链乘最优顺序问题
- 动态规划---LCS问题的求解(转载)
- fjnu 1403 高精度整数去位去最小问题
- 石子合并问题 --动态规划--解法1
- 动态规划求解最长公共子串问题
- 关于《一个SQL语句查询问题(查询最小值)(急)》回复里面没有正确理想的答案!
- 初识分治法,动态规划——中位数,Gray码与零钱问题
- [原创]【动态规划求解“键盘上字母分配”问题】