• 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

  • 相关阅读:
    五、02【Java IO模型】之File类
    自动化测试用例的编写,只需要牢记7点,轻轻松松
    Linux- tmux工具的使用
    【PAT甲级 - C++题解】1072 Gas Station
    vue.js毕业设计,基于vue.js前后端分离图书购物商城小程序系统 开题报告
    【SpringBoot】 环境准备
    arthas 监控线程池相关对象
    2.6 Python 基本数据类型
    Navicat 16.1 的新功能 - 第 1 部分
    Open3D 网格滤波
  • 原文地址:https://blog.csdn.net/he_zhidan/article/details/133796506