leetcode-135. Candy
2017-11-06 16:02
274 查看
考察点
贪心思路
从左往右扫描一遍,贪心一次;然后从右往左扫描一遍,当当前位ratings小于左边一位ratings并且当前为nums大于左边一位nums时,要将左边一位赋值为当前位nums+1.C++代码
class Solution { public: int candy(vector<int>& ratings) { int size = ratings.size(); vector<int> nums(ratings.size(), 1); int sum = 0; for (int i=1; i<size; i++) { if (ratings[i] > ratings[i-1]) { nums[i] = nums[i-1] + 1; } } for (int i = size - 1; i >0; i--) { if (ratings[i] < ratings[i-1] && nums[i] >= nums[i-1]) nums[i - 1] = nums[i] + 1; } for (int i=0; i<size; i++) { //cout<<nums[i]<<" "; sum += nums[i]; } return sum; } };
python代码:
class Solution: def candy(self, ratings): """ :type ratings: List[int] :rtype: int """ num_list = [1] * len(ratings) for i in range(len(ratings) - 1): if ratings[i+1] > ratings[i]: num_list[i+1] = num_list[i] + 1 for i in range(len(ratings)-2, -1, -1): if ratings[i] > ratings[i+1] and num_list[i] <=num_list[i+1]: num_list[i] = num_list[i+1] + 1 return sum(num_list)
相关文章推荐
- leetcode 135. Candy 分糖果 + 很经典的贪心算法
- leetcode 135. Candy
- leetcode-135. Candy
- LeetCode 135. Candy
- leetcode 135. Candy
- leetcode @python 135. Candy
- Leetcode 135. Candy
- LeetCode 135. Candy (O(n)时间 O(n)和O(1)空间的两种实现)
- Leetcode 135. Candy
- leetcode题解-135. Candy
- 【leetcode】135. Candy【java】
- 【LeetCode】135. Candy
- [LeetCode]135. Candy
- [LeetCode] 135. Candy
- LeetCode 135. Candy
- leetcode No135. Candy
- leetcode 135. Candy
- LeetCode 135. Candy
- [leetcode] 135. Candy
- leetcode 135. Candy