首页 > 编程语言 >程序分享--常见算法/编程面试题:分发糖果

程序分享--常见算法/编程面试题:分发糖果

时间:2024-05-23 20:58:18浏览次数:28  
标签:ratings 面试题 -- 编程 len cd int 糖果

关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;
有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。
或关注博主免费专栏【程序员宝典--常用代码分享】里面有大量面试涉及的算法或数据结构编程题。

-------------------------------------正文----------------------------------------

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:
1.每个孩子至少分配到 1 个糖果。
2.相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

示例 1:
输入:ratings = [1,0,2]
输出:5
解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。

示例 2:
输入:ratings = [1,2,2]
输出:4
解释:你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,也能满足题干中的两个条件。

-------------------------------------答案----------------------------------------

class Solution {
public:
    static int candy(vector<int>& ratings) {
        int len = ratings.size();
        vector<int> uplift(len,0);
        vector<int> downlift(len,0);
        int cd = 0;
        for(int i = 1;i < len;i++){
            if(ratings[i]>ratings[i-1]) {
                cd++;
            } else  {
                cd = 0;
            }
            uplift[i] = cd;
        }
        cd = 0;
        for(int i = len-2;i >= 0;i--){
            if(ratings[i]>ratings[i+1]) {
                cd++;
            } else {
                cd = 0;
            }
            downlift[i] = cd;
        }
        cd = len;
        for(int i = 0;i < len;i++){
            cd += max(uplift[i],downlift[i]);
        }
        return cd;
    }
};

感兴趣的同学辛苦 关注/点赞 ,持续分享逻辑、算法、管理、技术、人工智能相关的文章。

博主其它经典原创:《管理心得--如何高效进行跨部门合作》,《技术心得--如何成为优秀的架构师》、《管理心得--如何成为优秀的架构师》、《管理心理--程序员如何选择职业赛道》,及
C#实例:SQL如何添加数据》,《C#实战分享--爬虫的基础原理及实现》欢迎大家阅读。

标签:ratings,面试题,--,编程,len,cd,int,糖果
From: https://blog.csdn.net/weixin_60437218/article/details/138282577

相关文章

  • 每日一练——颜色分类(快慢指针排序)
    目录题目代码分析案例模拟重难点分析自检复习 题目75.颜色分类-力扣(LeetCode)代码//交换函数,交换指针a和指针b指向的整数voidswap(int*a,int*b){intt=*a;*a=*b;*b=t;}voidsortColors(int*nums,intnumsSize){//双指针......
  • 栈和队列1 顺序栈及基本操作实例(进制转换)
    #include<stdio.h>#include<stdlib.h>#defineINITSIZE100#defineINCREAMENT10 typedefstructSqStack{   int*data;   int*top;   intstacksize;}SqStack;voidInitStack(SqStack*L){   L->data=(int*)malloc(INITSIZE*siz......
  • 【Test 08】优先队列、滑动窗口、DFS
    文章目录1.单词搜索2.除2操作3.dd爱框框1.单词搜索题目链接解题思路:DFS(深度优先遍历),用一个pos记录要匹配单词word的位置,每次与pos进行匹配判断(这样做的好处是不用把答案存下来)注意细节❗:①没有用flag来记录的话,所有在DFS暴搜的时候需要......
  • [自动驾驶技术]-2 感知系统之传感器功能和网络方案
    1传感器功能自动驾驶系统通常使用多种传感器来实现对车辆周围环境的全面感知,包括摄像头、雷达、激光雷达(LiDAR)、超声波传感器、惯性测量单元(IMU)和全球定位系统(GPS)。以下是我们对这些传感器做分别介绍:1)摄像头(Camera)主要组件包括镜头、图像传感器(通常是CMOS或CCD传感器)和处......
  • 掌握pandas cut函数,一键实现数据分类
    pandas中的cut函数可将一维数据按照给定的区间进行分组,并为每个值分配对应的标签。其主要功能是将连续的数值数据转化为离散的分组数据,方便进行分析和统计。1.数据准备下面的示例中使用的数据采集自王者荣耀比赛的统计数据。导入数据:#2023年世冠比赛选手的数据fp=r"D......
  • 线段(线性dp)
     题目链接:https://www.luogu.com.cn/problem/P3842思路:f[i][0]表示走完第i行且停在第i行的左端点最少用的步数f[i][1]同理,停在右端点的最少步数。那么转移就很简单了,走完当前行且停到左端点,那么一定是从右端点过来的,那么从上一行左端点转移的话就是f[i][0]=abs(上一行左端......
  • Python 将PowerPoint (PPT/PPTX) 转为HTML
    1.Python 将PowerPoint文档转为HTML格式要实现该转换,仅需加一个.ppt或.pptx文档,然后使用 Presentation.SaveToFile() 方法将其另存为HTML格式。fromspire.presentation.commonimport*fromspire.presentationimport*#加载PPT文档ppt=Presentation()ppt.L......
  • 学习第一天
    常用插件Chinese.中文语言包LiveServer:本地服务器,自动实时更新页面MarkdownPreviewEnha...预览markdown文档MarkdownLint:markdown语法检查器lidlnamelage[---|---|---10ladmin|30|l10ladmin|30110ladminl30单行代码:一个反引号·console.log('helloworld');·......
  • Flutter笔记:Widgets Easier组件库-使用隐私守卫
    Flutter笔记WidgetsEasier组件库:使用隐私守卫-文章信息-Author:李俊才(jcLee95)VisitmeatCSDN:https://jclee95.blog.csdn.netMyWebSite:http://thispage.tech/Email:[email protected]:https://blog.csdn.net......
  • 哪类漏洞容易被攻破
    这个取决于多种因素,包括漏洞的严重程度、攻击者的技术能力和资源、目标系统的安全配置等。然而,一些常见的漏洞类型由于其普遍性和严重性,往往更容易被攻破。例如,跨站脚本(XSS)漏洞是一种非常常见的安全漏洞,攻击者可以在网页中插入恶意代码,利用浏览器执行这些代码来窃取用户信息......