当前位置: 首页 > news >正文

LeetCode-135-分发糖果

题目描述:n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

题目详细链接

解题思路:
这道题既要考虑左孩子和自己的大小,还要考虑右孩子和自己的大小,两边都要满足,一次遍历不能两者兼顾,因此需要遍历两次,一次考虑 右孩子 > 左孩子的情况,一次考虑 左孩子 > 右孩子的情况。
具体步骤如下:

  1. 构建一个糖果数组candy [],长度和孩子数组一样,初始值都是1;
  2. 先从左到右遍历 考虑 右小孩 > 左小孩 的时候右小孩糖果+1的情况
  3. 再从右到左遍历 考虑 左小孩 > 右小孩 的时候左小孩糖果+1的情况,为什么需要从右向左遍历,自己推理一下就可以理解了,注意,这个是在上一步的基础之上更新candy [],因此要选择两次的最大值作为最终的candy[i]结果
  4. 对candy []求和返回结果即可。

代码实现:

class Solution {public int candy(int[] ratings) {int len = ratings.length;int[] candy = new int[len];// ,每个孩子需要的糖果数组// 初始化糖果为 1for (int i = 0; i < len; i++) {candy[i] = 1;}// 先从左到右遍历 考虑 右小孩 > 左小孩 的时候右小孩糖果+1的情况for (int i = 1; i < len; i++) {if (ratings[i] > ratings[i-1]){candy[i] = candy[i-1]+1;}}// 再从右到左遍历 考虑 左小孩 > 右小孩 的时候左小孩糖果+1的情况for (int i=len-1;i>0;i--){if (ratings[i-1] > ratings[i]){candy[i-1] = Math.max(candy[i] + 1, candy[i-1]);// 因为第一次从左向右遍历的时候已经有值了,所以这次取最大值}}int res = 0;for (int i = 0; i < len; i++) {res += candy[i];// 这种方法的耗时更短}return res;
//        return Arrays.stream(candy).sum();//数组求和,但是效率低}
}

相关文章:

LeetCode-135-分发糖果

题目描述&#xff1a;n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计…...

Viva Workplace Analytics Employee Feedback SU Viva Glint部署方案

目录 一、Viva Workplace Analytics & Employee Feedback SU Viva Glint介绍 二、Viva Glint和Viva Pulse特点和优势 1. 简单易用...

ASIC-WORLD Verilog(14)系统任务

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加点自己的理解&#xff09;分享给大家。 这是网站原文&…...

两台电脑共享文件设置

步骤一&#xff1a;确保网络连接正常&#xff0c;可网线直连。 两台电脑IP设置&#xff0c;例&#xff1a; 步骤二&#xff1a;启用共享功能。 1.在【控制面板】中选择【网络和Internet】&#xff1b; 2.点击【网络和共享中心】&#xff0c;在左侧导航栏中&#xff0c;点击【…...

《C和指针》笔记17:sizeof

sizeof操作符判断它的操作数的类型长度&#xff0c;以字节为单位表示。 操作数既可以是个表达式&#xff08;常常是单个变量&#xff09;&#xff0c; sizeof x上面的式子返回变量x所占据的字节数。 也可以是两边加上括号的类型名。 sizeof(int)上面的式子返回整型变量的字…...

说说大表关联小表

分析&回答 Hive 大表和小表的关联 优先选择将小表放在内存中。小表不足以放到内存中&#xff0c;可以通过bucket-map-join(不清楚的话看底部文章)来实现&#xff0c;效果很明显。 两个表join的时候&#xff0c;其方法是两个join表在join key上都做hash bucket&#xff0c…...

Unity 之 方括号[ ] 的用法以及作用

文章目录 在Unity中&#xff0c;方括号 [ ] 通常用于表示属性、特性&#xff08;Attributes&#xff09;或者元数据&#xff08;Metadata&#xff09;。这些标记提供了附加信息&#xff0c;可以用于修改类、方法、字段等的行为或者在编辑器中进行设置。 以下是一些常见的用法&…...

微服务nacos或者yml配置内容部分加密jasypt

写在最前&#xff1a;因业务需要把nacos配置中的部分密码加密&#xff0c;不能暴露在外&#xff0c;本想用nacos官方的插拔插件nacos-aes-encryption-plugin的&#xff0c;但是比较复杂且官方文档说的不清不楚所以弃用&#xff0c;有兴趣的可以参考。链接&#xff1a;https://n…...

Vue:插槽,与自定义事件

1.插槽slot <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <div id"app"><!-- <p>列表书籍</p>--> <!-- …...

Window11-Ubuntu双系统安装

一、制作Ubuntu系统盘 1.下载Ubuntu镜像源 阿里云开源镜像站&#xff1a;https://mirrors.aliyun.com/ubuntu-releases/ 清华大学开源软件镜像网站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ 选择想要的版本下载&#xff0c;我用的是20.04版本。 2…...

【React】React学习:从初级到高级(一)

React学习[一] 1 UI描述1.1 组件的创建与使用1.1.1 创建组件1.1.2 使用组件 1.2 组件的导入与导出1.2.1 根组件文件1.2.2 导出和导入一个组件1.2.3 从同一文件中导出和导入多个组件 1.3 使用JSX书写标签语言1.3.1 JSX:将标签引入JavaScript1.3.2 将HTML转换为JSX1.3.3 高级提示…...

Flutter 安装教程 + 运行教程

1.下载依赖 https://flutter.cn/docs/get-started/install/windows 解压完后根据自己的位置放置&#xff0c;如&#xff08;D:\flutter&#xff09; 注意 请勿将 Flutter 有特殊字符或空格的路径下。 请勿将 Flutter 安装在需要高权限的文件夹内&#xff0c;例如 C:\Program …...

正中优配:A股早盘三大股指微涨 华为概念表现活跃

周三&#xff08;8月30日&#xff09;&#xff0c;到上午收盘&#xff0c;三大股指团体收涨。其间上证指数涨0.06%&#xff0c;报3137.72点&#xff1b;深证成指和创业板指别离涨0.33%、0.12%&#xff1b;沪深两市合计成交额6423.91亿元&#xff0c;总体来看&#xff0c;两市个…...

SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)4- Plant间在库转送 之 在库转送Order(有出荷)

SAP 中在库移动 不仅有入库&#xff08;GR&#xff09;&#xff0c;出库&#xff08;GI&#xff09;&#xff0c;也可以是单纯内部的转记或转送。 1&#xff0c;振替转记&#xff08;转移过账&#xff09; 2&#xff0c;在库转送&#xff08;库存转储&#xff09; 1&#xff…...

suricata规则字段解析

一、Payload关键字 1、content 可以匹配所有字符&#xff1b;从a到z&#xff0c;大写和小写及所有特殊标志。针对一些特殊符号或中文等&#xff0c;需要使用十六进制进行匹配&#xff0c;写法&#xff1a;|3A|表示冒号&#xff0c;以此类推。|0D| -> \r&#xff0c;|0A| -…...

韶音骨传导耳机好不好,韶音骨传导耳机值得入手吗

韶音耳机的质量还是很不错的&#xff0c;其实力相比于百元价位的耳机而言领先了不少&#xff0c;具备多种功能&#xff0c;佩戴起来也是有着舒适性。它自主研发了骨传导音频技术&#xff0c;不过在今年开始&#xff0c;似乎已经将方向开始往运动偏移。 而在韶音的骨传导耳机中&…...

【LeetCode】208.实现Trie(前缀树)

题目 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie 类&#xff1a; Trie() 初始化前缀…...

多线程笔记: volatile、synchronized、Monitor等

为什么非volatile变量也有线程可见性&#xff1f;不加volatile也可以看到变量变化是为什么&#xff1f;Thread.sleep() 和 System.out.println() 与内存可见性的影响Thread.sleep() 对线程可见性的影响&#xff1f;Java中的Monitor监视器是什么&#xff1f; Slf4j public clas…...

shell语法--数组相关

shell定义一个数组 在 shell 中&#xff0c;可以使用以下语法来定义一个数组&#xff1a; array_name(item1 item2 item3 ...) 其中&#xff0c;array_name 是数组的名称&#xff0c;item1、item2、item3 等是数组中的元素&#xff0c;它们之间用空格分隔。例如&#xff0c;以下…...

AI:05 - 基于深度学习的道路交通信号灯的检测与识别

随着人工智能的快速发展,基于深度学习的视觉算法在道路交通领域中起到了重要作用。本文将探讨如何利用深度学习技术实现道路交通信号灯的检测与识别,通过多处代码实例展示技术深度。 道路交通信号灯是指示交通参与者行驶和停止的重要信号。准确地检测和识别交通信号灯对于智…...

Simulink新手必看:从零搭建四轴飞行器仿真模型(附完整代码)

Simulink实战&#xff1a;四轴飞行器仿真建模全流程解析 四轴飞行器作为无人机领域的经典构型&#xff0c;其控制系统的设计与验证一直是工程师和科研人员的重点课题。对于刚接触Simulink的开发者而言&#xff0c;如何将复杂的飞行动力学转化为可视化的仿真模型往往令人望而生畏…...

快速体验:Python3.8镜像开箱即用,无需配置直接写代码

快速体验&#xff1a;Python3.8镜像开箱即用&#xff0c;无需配置直接写代码 1. Python3.8镜像简介 Python作为当下最流行的编程语言之一&#xff0c;其3.8版本在性能优化和功能完善方面达到了一个成熟稳定的阶段。这个预配置好的Python3.8镜像&#xff0c;让你可以完全跳过繁…...

灵毓秀-牧神-造相Z-Turbo使用全攻略:从环境检查到作品输出

灵毓秀-牧神-造相Z-Turbo使用全攻略&#xff1a;从环境检查到作品输出 1. 镜像简介与核心功能 灵毓秀-牧神-造相Z-Turbo是一款基于Xinference部署的AI文生图模型服务&#xff0c;专门用于生成《牧神记》中灵毓秀角色的高质量图像。该镜像集成了Gradio交互界面&#xff0c;让用…...

激发创意:利用快马平台ai模型辅助设计与优化cmhhc算法

激发创意&#xff1a;利用快马平台AI模型辅助设计与优化CMHHC算法 最近在做一个字符串压缩相关的项目&#xff0c;需要实现一个自定义的压缩算法CMHHC。这个算法的核心思想其实很简单&#xff1a;对于连续出现的相同字符&#xff0c;用该字符加上出现次数来表示。比如"aa…...

fre:ac开源音频转换工具:让无损音乐在全设备自由流动的专业级解决方案

fre:ac开源音频转换工具&#xff1a;让无损音乐在全设备自由流动的专业级解决方案 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 你是否遇到过这些音乐管理难题&#xff1a;珍藏多年的CD专辑不知如何数…...

Pixel Language Portal快速上手:无需Python基础的Streamlit镜像开箱即用

Pixel Language Portal快速上手&#xff1a;无需Python基础的Streamlit镜像开箱即用 1. 什么是Pixel Language Portal&#xff1f; Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是一款基于腾讯Hunyuan-MT-7B核心引擎构建的创新翻译工具。它最大的特点是…...

一键搞定完整网页截图:Chrome扩展终极指南

一键搞定完整网页截图&#xff1a;Chrome扩展终极指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension 你…...

Qwen3.5-9B-AWQ-4bit惊艳图文效果:多张测试图主体识别与语义概括对比展示

Qwen3.5-9B-AWQ-4bit惊艳图文效果&#xff1a;多张测试图主体识别与语义概括对比展示 1. 模型能力概览 千问3.5-9B-AWQ-4bit是一款支持图像理解的多模态模型&#xff0c;能够结合上传图片与文字提示词&#xff0c;输出中文分析结果。这个量化版本在保持较高精度的同时&#x…...

**发散创新:基于微应用架构的轻量级权限控制实战设计**在现代前端开

发散创新&#xff1a;基于微应用架构的轻量级权限控制实战设计 在现代前端开发中&#xff0c;**微应用&#xff08;Micro Frontend&#xff09;*8 已成为构建复杂单页应用&#xff08;SPA&#xff09;的标准方案之一。它允许团队独立开发、部署和维护各自的功能模块&#xff0c…...

Gitee团队协作实战:从零到一掌握项目协同开发流程

1. 为什么选择Gitee进行团队协作开发 作为一个经历过多次团队协作开发的老手&#xff0c;我强烈推荐Gitee作为国内团队的代码托管平台。相比其他平台&#xff0c;Gitee的服务器在国内&#xff0c;访问速度更快&#xff0c;而且完全符合国内开发者的使用习惯。记得我第一次带团队…...