leetcode 135 分发糖果

简介: leetcode 135 分发糖果

分发糖果

c939894088944129a74286c0a1865279.png核心思想是两边遍历,正遍历一次和反遍历一次

单项遍历写了一天过33个测试

贪心算法

class Solution {
public:
    int candy(vector<int>& ratings) {
        int sum=0 ;
        vector<int> num(ratings.size(),1);
        for(int i=0 ; i < ratings.size()-1 ;i++ ) //正向,发现分高的孩子多给一个糖
        {
            if(ratings[i+1] > ratings[i]) 
                num[i+1] = num[i]+1;
        }
        for(int i= ratings.size()-1 ; i >=1 ;i-- )//反向,发现分高的孩子多给一个糖
        {
            if(ratings[i] < ratings[i-1]) 
                num[i-1] = max(num[i]+1 , num[i-1]) ;// 找最大的
        }
        for(auto it:num)  sum += it;
        return sum;
    }
};

二刷

class Solution {
public:
    int candy(vector<int>& ratings) {
        int result=0;
        vector<int> nums(ratings.size(),1);
        for(int i=0 ; i<ratings.size()-1 ; i++)
        {
             if(ratings[i] < ratings[i+1])
            {
                nums[i+1] = nums[i] + 1;
            }
        }
        for(int i = ratings.size()-1 ; i>0 ;i--)
        {
             if(ratings[i] < ratings[i-1] )
            {
                nums[i-1] = max(nums[i-1], nums[i]+1);
            }
        }
        for(auto it:nums) result += it;
        return result;
    }
};


相关文章
|
19天前
|
测试技术
力扣888 公平糖果交换
力扣888 公平糖果交换
|
19天前
|
Java
leetcode-455:分发饼干
leetcode-455:分发饼干
31 0
|
19天前
|
算法
leetcode代码记录(分发饼干
leetcode代码记录(分发饼干
14 0
|
19天前
|
索引
[经典力扣面试题]135. 分发糖果
[经典力扣面试题]135. 分发糖果
|
19天前
leetcode:455. 分发饼干
leetcode:455. 分发饼干
17 0
|
19天前
|
Java
leetcode-135:分发糖果
leetcode-135:分发糖果
28 0
|
19天前
|
算法 定位技术
六六力扣刷题贪心算法之分发饼干
六六力扣刷题贪心算法之分发饼干
32 0
|
19天前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 135. 分发糖果 算法解析
☆打卡算法☆LeetCode 135. 分发糖果 算法解析
|
19天前
LeetCode 20200601 打卡 1431. 拥有最多糖果的孩子
LeetCode 20200601 打卡 1431. 拥有最多糖果的孩子
12 0
|
7月前
|
算法 网络架构
代码随想录算法训练营第三十三天 | LeetCode 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果
代码随想录算法训练营第三十三天 | LeetCode 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果
33 0