• C++算法:分发糖果


    LeetCode135分发糖果

    n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
    你需要按照以下要求,给这些孩子分发糖果:
    每个孩子至少分配到 1 个糖果。
    相邻两个孩子评分更高的孩子会获得更多的糖果。
    请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。
    示例 1:
    输入:ratings = [1,0,2]
    输出:5
    解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。
    示例 2:
    输入:ratings = [1,2,2]
    输出:4
    解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。
    第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。

    提示:

    n == ratings.length
    1 <= n <= 2 * 104
    0 <= ratings[i] <= 2 * 104

    2023年5月

    class Solution {
    public:
    int candy(vector& ratings) {
    m_c = ratings.size();
    std::vector> vValueIndexs;
    for (int i = 0; i < m_c; i++)
    {
    vValueIndexs.emplace_back(ratings[i], i);
    }
    sort(vValueIndexs.begin(), vValueIndexs.end());
    vector vRet(m_c);
    for (int j = 0; j < vValueIndexs.size(); j++)
    {
    const int iCur = vValueIndexs[j].first;
    const int i = vValueIndexs[j].second;
    int num = 1;
    if ((i + 1 < m_c) && (ratings[i + 1] < iCur))
    {
    num = max(num, vRet[i + 1]+1);
    }
    if ((i > 0) && (ratings[i - 1] < iCur))
    {
    num = max(num, vRet[i - 1]+1);
    }
    vRet[i] = num;
    }
    return std::accumulate(vRet.begin(), vRet.end(), 0);
    }
    int m_c;
    };

    2023年8月

    class Solution {
    public:
    int candy(vector& ratings) {
    m_c = ratings.size();
    std::vector> vValueIndexs;
    for (int i = 0; i < m_c; i++)
    {
    vValueIndexs.emplace_back(ratings[i], i);
    }
    sort(vValueIndexs.begin(), vValueIndexs.end());
    vector vRet(m_c);
    for (int j = 0; j < vValueIndexs.size(); j++)
    {
    const int iCur = vValueIndexs[j].first;
    const int i = vValueIndexs[j].second;
    int num = 1;
    if ((i + 1 < m_c) && (ratings[i + 1] < iCur))
    {
    num = max(num, vRet[i + 1]+1);
    }
    if ((i > 0) && (ratings[i - 1] < iCur))
    {
    num = max(num, vRet[i - 1]+1);
    }
    vRet[i] = num;
    }
    return std::accumulate(vRet.begin(), vRet.end(), 0);
    }
    int m_c;
    };

    其它

    视频课程

    如果你觉得复杂,想从简单的算法开始,可以学习我的视频课程。
    https://edu.csdn.net/course/detail/38771
    我的其它课程
    [https://edu.csdn.net/lecturer/6176]

    (https://edu.csdn.net/lecturer/6176)

    测试环境

    win7 VS2019 C++17

    相关下载

    算法精讲《闻缺陷则喜算法册》doc版
    https://download.csdn.net/download/he_zhidan/88348653

  • 相关阅读:
    React源码分析(三):useState,useReducer
    当我问chatGPT怎么拟合曲线
    艾美捷ALC-0159基本参数&文献参考
    TypeScript基础类型(day2)
    前端mockjs使用方式[express-mockjs]
    如何在Linux中使用read命令读取用户输入?——read命令实战
    计算机组成原理百道必考大总结(上)
    解决github无法访问,访问慢或者图裂问题
    DQL语言进阶3
    Linux进程概念
  • 原文地址:https://blog.csdn.net/he_zhidan/article/details/133796506