首页 > 其他分享 >LeetCode 面试经典150题---005

LeetCode 面试经典150题---005

时间:2024-04-11 12:55:24浏览次数:17  
标签:150 遍历 nums int res --- 005 ans 糖果

#### 135. 分发糖果
n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。
n == ratings.length
1 <= n <= 2 * 104
0 <= ratings[i] <= 2 * 104
本题的意思就是对于数组中的元素i,如果它比i-1大,那么它得到的糖果数就要比i-1大1,对于i+1也是一样的。我们首先将答案数组初始化为全1,然后从左到右遍历,如果此时nums[i]>nums[i-1],则将res[i] = res[i - 1] + 1;遍历完成后,我们只考虑了每个元素比左边元素要大的情况,因此还需要从右往左遍历一遍,考虑每个元素比右边元素要大的情况,并且由于res[i]已经计算过一遍了,因此第二次遍历的时候不能直接更新res[i],而是要res[i] = max(res[i], res[i + 1] + 1),保证res[i]对于左右元素都满足条件。

class Solution {
public:
    int candy(vector<int>& nums) {
        int n = nums.size();
        vector<int> res(n, 1);
        int ans = 0;
        for(int i = 1;i < n;i ++ ){
            if(nums[i] > nums[i - 1]) res[i] = res[i - 1] + 1;
        }
        for(int i = n - 2;i >= 0;i -- ){
            if(nums[i] > nums[i + 1]) res[i] = max(res[i], res[i + 1] + 1);
            ans += res[i];
        }
        ans += res[n - 1];
        return ans;
    }
};

定位是困难题,还有一种解法是记忆化搜索,不过不如这个简单,懒得写了,二刷的时候再来查漏补缺吧。

标签:150,遍历,nums,int,res,---,005,ans,糖果
From: https://www.cnblogs.com/timeac-coder/p/18128836

相关文章

  • 52 Things: Number 10: What is the difference between the RSA and strong-RSA prob
    52Things:Number10:WhatisthedifferencebetweentheRSAandstrong-RSAproblem?52件事:数字10:RSA和强RSA问题有什么区别?Thisisthelatestinaseriesofblogpoststoaddressthelistof'52ThingsEveryPhDStudentShouldKnowToDoCryptography......
  • Scalable Multi-Hop Relational Reasoning for Knowledge-Aware Question Answering翻
    文章目录论文标题:用于知识感知问答的可扩展的多跳关系推理摘要1简介2问题表述和概述部分3背景:多关系图编码方法4拟议的方法:多跳图关系网络(MHGRN)4.1MHGRN:模型架构4.2结构化关系注意力4.3计算复杂度分析4.4MHGRN的表现力4.5学习、推断和路径解码5实验设置5.1从......
  • 天梯赛-练习集 -L2-001 紧急救援, 一个不是很正常的过题方法
    L2-001紧急救援代码长度限制:16KB时间限制:200ms内存限制:64MB题目描述作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他......
  • ASP.NET--Request(请求)对象概述
    概述:Request对象用于检索从浏览器向服务器发送的请求中的信息。它提供对当前页请求的访问,包括标题、Cookie、客户端证书,查询字符串等,与HTTP协议的请求信息相对应。同样,假如将用户请求服务器的过程比喻成客户到柜台买商品的过程,那么客户向享受原描述要购买商品(如颜色,大小,功能......
  • 人工智能_大模型030_大模型开发框架003_Semantic Kernel中Native Function嵌套调用_SK
    ###4.2、NativeFunction嵌套调用(选)**注意:**NativeFunction的嵌套调用,本质上就是函数嵌套。官方给的写法是在Kernel的设计思想下的实现,通过Kernel来获取函数并执行,观感上较为晦涩。实际开发中,可以根据个人对SK内核与设计理念的理解,自行选择使用以下写法,或使用普......
  • ARM DS-5 系列之前言
    前言本文主要介绍在实际工作DS-5常见的一些用法,DS-5 相关资料可以访问其官网:https://developer.arm.com/tools-and-software/embedded/legacy-tools/ds-5-development-studio 1.1ARMDS-5简介ARMDS-5是一款由ARM公司开发的集成开发环境(IDE),用于软件开发、调试和优化ARM......
  • 深度学习-nlp-循环神经网络RNN--69
    目录1.概述2.RNN的模型参考:https://zhuanlan.zhihu.com/p/308449051.概述输出会反馈到输入的神经网络:循环神经网络(RecurrentNeuralNetworks,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。在前面讲到的DNN和CNN中,训练样本的输入和输出......
  • Centos7-kvm-WEB管理工具kimchi使用篇
    镜像上传接上篇安装完wok和kimchi这两个服务后,能正常访问https://localhost:8001 (输入地址一定是Https!!!)   功能介绍导航栏wok是查看报错日志和操作记录的,同时设置项可以开关kimchi状态     导航栏的Virtualization分为访客模板存储器网络(这......
  • nextJs中使用styled-jsx
    NextJs不支持直接在页面和组件里importCss这种引入方式(除了全局引入),但是可以使用styled-jsx的方式进行Css的样式定义,也可以实现样式加载NextJs中Css的几种使用方案: global全局引入:在main文件或者app.js/ts文件里面进行全局引入,这种只是适合全局作用的样式引入。例如:im......
  • ARM DS-5 加载 ELF 文件运行
    1.1.1DS-5工程创建在使用ARMDS-5连接board(或者PFGA)之前首先需要能够扫描到相应的硬件信息,比如对应的cpu的相关信息:coresight相关组件信息,Cache信息等。创建好工程项目后按照下图黄线的指示进行扫描操作(通常是完成扫描后才会去执行“buildplatform”): 如果更换平台......