C++实现——小孩分糖果问题

2023-11-10

这里写图片描述

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

//分糖果的问题
/*
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.
*/

/*
解题思路:
遍历两边,首先每个人得一块糖,第一遍从左到右,若当前点比前一个点高就比前者多一块。
这样保证了在一个方向上满足了要求。第二遍从右往左,若左右两点,左侧高于右侧,但
左侧的糖果数不多于右侧,则左侧糖果数等于右侧糖果数+1,这就保证了另一个方向上满足要求。

最后将各个位置的糖果数累加起来就可以了。
*/


int candyCount(vector<int>&rating) {

    int res = 0;
    //孩子总数
    int n = rating.size();

    //糖果集合
    vector<int> candy(n, 1);
    //从左往右遍历
    for (int i = 0;i < n - 1;i++) {
        if (rating[i + 1] > rating[i])candy[i + 1] = candy[i] + 1;
    }
    //从右往左
    for (int i = n - 1;i > 0;i--) {
        if (rating[i - 1] > rating[i] && candy[i - 1] <= candy[i])candy[i - 1] = candy[i] + 1;
    }

    //累加结果
    for (auto a : candy) {
        res += a;
    }

    return res;
}
//测试函数
int main() {

    vector<int> rating{1,3,2,1,4,5,2};
    cout << candyCount(rating) << endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++实现——小孩分糖果问题 的相关文章

  • 在现实生活中,您会使用 heapq Python 模块做什么?

    读完吉多的书后使用 Python 对 2MB RAM 中的一百万个 32 位整数进行排序 http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2m
  • 单源最短路径,包含每条边的距离和权重

    假设有一个无向图 连接任意两个节点的每条边都有两个权重 即距离和成本 我想要获得最短路径 但也要确保不超出一定的成本 我尝试过实现 Djikstra 如果超出成本 则简单地回溯 由于缺乏更好的术语 直到遍历整个图表 但是 我正在寻找比这更快
  • 对相当大的整数的大集合的操作的快速实现

    描述 我实现了以下类 LabSetInt64 参见下面的代码 这里的目标是尽可能快地操作大量大整数 最多 10M 的值 我的主要要求集中在 至关重要 尽快获取集合的大小 基数 重要 能够非常快速地迭代一组集合 所以 从下面的实现开始 我还有
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • iOS心率检测算法

    我正在尝试在我正在开发的应用程序中实现心跳记录功能 首选方法是使用 iPhone 的摄像头 在灯亮的情况下 让用户将手指放在镜头上 然后检测视频源中与用户心脏相对应的波动 我通过以下堆栈溢出问题找到了一个非常好的起点here https s
  • 如何计算列表的最小不公平性总和

    我试图将问题陈述总结如下 Given n k和一个数组 列表 arr where n len arr and k is an integer in set 1 n inclusive 对于数组 或列表 myList 不公平总和定义为sum中
  • 基数首先排序最重要的还是最不重要的,哪个更快?

    我一直在研究基数排序实现 到目前为止粘贴在下面的代码 代码是用 Java 编写的 但在 C C 中应该也能正常工作 正如您从实现中看到的 我首先执行最高有效位 即整数的第 31 位 这似乎更快 因为一旦子组完成 就不再需要迭代 例如 打个比
  • 地图应用的聚类算法

    我正在研究地图上的聚类点 纬度 经度 对于快速且可扩展的合适算法有什么建议吗 更具体地说 我有一系列纬度 经度坐标和一个地图视口 我正在尝试将靠近的点聚集在一起以消除混乱 我已经有了解决问题的方法 see here http bouldr
  • 优化 HTML 属性压缩顺序

    我在某处读到 按一定顺序组织 HTML 属性可以提高 HTML 文档的压缩率 我想我是从 Google 或 Yahoo 推荐的更快网站上读到这篇文章的 如果我没记错的话 建议是将最常见的属性放在第一位 例如id等 然后将其余的按字母顺序排列
  • 为什么我的 Project Euler Problem 12 算法这么慢?

    我已经在 Scala 中为 PE P12 创建了解决方案 但速度非常非常慢 有人可以告诉我为什么吗 如何优化这个 calculateDevisors 简单的方法和calculateNumberOfDivisors 除数函数具有相同的速度 i
  • 找到不(必要)与二进制矩阵中的图像边界对齐的最大矩形

    我在用这个解决方案 https stackoverflow com questions 2478447 find largest rectangle containing only zeros in an nn binary matrix在
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • 为什么《破解编码面试》这个例子的时间复杂度是O(k c^k)?

    该问题来自 破解编码面试 第 6 版 问题 V1 11 以下代码打印长度为 k 的所有字符串 其中字符 是按排序顺序排列的 它通过生成所有长度的字符串来做到这一点 k 然后检查每个是否已排序 什么是运行时间 package QVI 11 P
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何检查无向图是否有奇数环

    我试图找到一个 O V E 时间算法来检查是否已连接 无向图有或没有奇数环 我正在考虑对图进行广度优先搜索 并尝试将顶点标记为黑色和白色 以便没有两个标记为相同颜色的顶点相邻 是否有任何已知的更简洁的算法可以在线性时间内解决这个问题 你的方
  • 当平方和为N时,如何找到四个变量的所有可能值?

    A 2 B 2 C 2 D 2 N给定一个整数N 打印出整数值的所有可能组合ABCD求解方程 我猜我们可以比暴力做得更好 天真的暴力会是这样的 n 3200724 lim sqrt n 1 for a 0 a lt lim a for b
  • 神经网络的层和神经元

    我想更多地了解神经网络 我正在开发一个 C 程序来制作神经网络 但我坚持使用反向传播算法 很抱歉没有提供一些工作代码 我知道有很多库可以用多种语言创建神经网络 但我更喜欢自己制作一个 关键是我不知道要实现特定目标 例如模式识别或函数近似或其
  • 从原点开始在离散 2D 网格上迭代向外螺旋的算法

    例如 这是预期螺旋的形状 以及迭代的每个步骤 y 16 15 14 13 12 17 4 3 2 11 18 5 0 1 10 x 19 6 7 8 9 20 21 22 23 24 其中线条是 x 轴和 y 轴 以下是算法每次迭代 返回
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List

随机推荐

  • 对于Excel界址点坐标批量转SHP方法——模型构建器

    关于Excel界址点批量转SHP 对界址点进行处理 将所有地块界址点全部放在一起 字段名 地块编号 唯一 拐点编号 X Y 必备 先将整个表加载到arcgis中然后导出 界址点 SHP 按照字段 编号 进行分类 组 模型构建器对 界址点 s
  • 阿里arthas web-console arthas-tunnel-server 支持wss

    arthas tunnel server 没有找到 wss web console js 线上需要https访问 无法在https中去访问 ws 需要支持wss 特殊修改处理下 arthas web console 源码下载 说明https
  • frp内网穿透搭建

    为什么需要内网穿透功能 从公网中访问自己的私有设备向来都是一件难事 自己的台式机 NAS等等设备 它们可能处于路由器后 或者运营商因为IP地址短缺不给你分配公网IP地址 果我们想直接访问这些设备 远程桌面 远程文件 SSH等等 一般来说要通
  • 如何在Jupyter Notebook中自由切换conda虚拟环境pythtorch_gpu

    一般情况 jupyter note在启动时 是与conda的默认虚拟环境 base root 连接 不能和新建虚拟环境pytorch gpu相连接 这需要安装一些插件来建立连接 需要安装的插件及过程 1 首先在conda中激活虚拟环境pyt
  • WDA学习笔记(一)环境准备

    前言 WDA目前在ABAP市场上有一定的需求 例如万科恒大碧桂园这些地产大佬们都用了一些BOPF的东西 多一个技能就多一些 机会 现在来系统了解一下WDA吧 WDA Web Dynpro For Aabap 和WDJ Web Dynpro
  • css多个class时的选择器用法

    http stackoverflow com questions 1041344 how can i select an element with multiple classes answertab active tab top 例如 a
  • dw超链接标签_Dreamweaver如何建立超链接?DW建立超链接方法介绍

    超级链接一般具有三个特点 蓝色 下划线 和手形标记 那么Dreamweaver如何建立超链接 下面小编就为大家介绍DW建立超链接方法 来看看吧 软件名称 Adobe Dreamweaver CS3 官方中文安装版软件大小 76 2MB更新时
  • 控制 matplotlib 子图大小

    效果图 代码 import numpy as np import matplotlib pyplot as plt 调整 matplotlib 子图的大小 x1 np linspace 0 0 5 0 x2 np linspace 0 0
  • Flink分布式执行包括调度、通信机制、检查点

    Flink的分布式执行包括两个重要的进程 master和worker 执行Flink程序时 多个进程参与执行 即作业管理器 Job Manager 任务管理器 Task Manager 和作业客户端 Job Client Flink程序需要
  • 考研DS备考

    23考研算法复习 一 图论相关算法 1 拓扑排序 2 最小生成树 2 1 Prim算法朴素实现 2 2 最小生成树Kruskal实现 3 最短路 3 1朴素版Dijkstra 3 2Bellman ford 3 3Floyd 二 排序相关算
  • Python 快速获取文件夹中的所有文件名,并保存到txt文件中

    下面的代码可以读取文件夹中的所有文件名 并记录到txt文件中 可以应用到如深度学习制作数据集等场景中 usr bin env python encoding utf 8 import os img path images img list
  • Windows防火墙阻止了远程调试

    问题 当调试数据库里的存储过程时提示 Windows防火墙当前阻止了远程调试 当接着打开SQL Server的时候提示 远程过程调用失败 解决办法 1 当遇到远程过程调试失败
  • windows下查看GPU使用率

    进入C Program Files NVIDIA Corporation NVSMI 在此处打开cmd 输入nvidia smi 第一行Driver Version 表示驱动是385 54 第二行中 第一行表示GPU序号 名字 Persis
  • python作业题

    1 输入三个坐标表示三角形的三个顶点 计算三角形的面积 import math x1 y1 x2 y2 x3 y3 eval input x1 y1 x2 y2 x3 y3 如果不在一条直线上就构成了三角形 if x1 x2 y1 y2 x
  • GMM-HMM在语音识别中的应用

    1 语音识别系统的基本结构 2 涉及算法 3 GMM高斯混合模型 3 1高斯混合模型的基本概念 高斯混合模型是指具有如下形式的概率分布模型 p y k 1k k y k p y arrowvert theta sum k 1 k alpha
  • docker redis单例安装

    环境 windows docker desktop 版本 19 03 12 1 下载redis的docker镜像 docker pull redis 6 0 8 2 设置docker共享目录 docker中的共享目录 即能将宿主的文件同步到
  • Pandas

    文章目录 1 什么是Pandas 2 Pandas的数据结构 2 1 Series 2 1 1 Series的创建 2 1 2 Series的属性 2 2 DataFrame 2 2 1 DataFrame的创建 2 2 2 DataFra
  • 在linux上odoo搭建

    一 配置Postgresql数据库 1 安装Postgresql root runner home sg os apt get install postgresql 2 配置postgresql 拷贝 var lib postgresql
  • Centos7五步安装Docker并解决docker官方镜像无法访问问题

    根据官方文档 https docs docker com install linux docker ce centos 搭建docker 1 卸载docker旧版本 sudo yum remove docker docker client
  • C++实现——小孩分糖果问题

    include