Candy
2015-08-29 18:45
218 查看
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.
What is the minimum candies you must give?
Solution:
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.
What is the minimum candies you must give?
Solution:
class Solution { public: int candy(vector<int>& ratings) { int len = ratings.size(); if(len <= 1) return len; vector<int> num(len, 1); int start = 0, count = 0; while(start < len) { for(int i = start + 1; i < len; ++i) { if(ratings[i-1] > ratings[i]) count++; else break; } for(int i = start; i <= start + count; ++i) num[i] += count - i + start; start += count + 1; count = 0; } for(int i = 1; i < len; ++i) { if(ratings[i] > ratings[i-1]) num[i] = num[i-1] + 1; else if(ratings[i] == ratings[i-1]) continue; else { if(num[i] >= num[i-1]) { int j = i; while(--j >= 0 && ratings[j] > ratings[j+1] && num[j] <= num[j+1]) num[j] = num[j+1] + 1; } } } int res = 0; for(int i = 0; i < len; ++i) res += num[i]; return res; } };
相关文章推荐
- 块级元素和行内元素的特点
- 数据结构与算法练习Java版练习1.9和1.10
- linux学习笔记之文件搜索命令
- POJ-1326
- 数据-二分图-F - Air Raid
- 两种方式截取字符串
- MR案例:输出/输入SequenceFile
- 使用Python脚本将文字转换为图片的实例分享
- 各种C++:Borland C++、Symantec C++、Microsoft VisualC++
- java保留有效数字
- UVa 821 - Page Hopping(Floyd)
- 漫谈构建运维平台化2014运维线下沙龙(北京站) | 峰云就她了
- osx 数字签名问题
- Follow your heart
- JS+AJAX(.ASHX) 实现用户登录
- BindService的用法
- Objective-C( protocol协议)
- Unity学习笔记—— 常用脚本函数
- 005Longest Palindromic Substring
- 文件级存储和块方式存储