OJ练习第153题——分发糖果

news/2025/1/15 23:29:47/

分发糖果

力扣链接:135. 分发糖果

题目描述

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

你需要按照以下要求,给这些孩子分发糖果:

每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。

示例

在这里插入图片描述

Java代码1(两次遍历)

官解这种方法要好理解一些。

class Solution {public int candy(int[] ratings) {int n = ratings.length;int[] left = new int[n];for (int i = 0; i < n; i++) {if (i > 0 && ratings[i] > ratings[i - 1]) {left[i] = left[i - 1] + 1;} else {left[i] = 1;}}int right = 0, ret = 0;for (int i = n - 1; i >= 0; i--) {if (i < n - 1 && ratings[i] > ratings[i + 1]) {right++;} else {right = 1;}ret += Math.max(left[i], right);}return ret;}
}

Java代码2(常数空间遍历)

在这里插入图片描述

class Solution {public int candy(int[] ratings) {int n = ratings.length;int ret = 1;int inc = 1, dec = 0, pre = 1;for (int i = 1; i < n; i++) {if (ratings[i] >= ratings[i - 1]) {dec = 0;pre = ratings[i] == ratings[i - 1] ? 1 : pre + 1;ret += pre;inc = pre;} else {dec++;if (dec == inc) {dec++;}ret += dec;pre = 1;}}return ret;}
}作者:力扣官方题解
链接:https://leetcode.cn/problems/candy/solutions/533150/fen-fa-tang-guo-by-leetcode-solution-f01p/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

失败代码

运行24/48,回头再来研究这种方法能不能行。和官解方法二同理。另外代码略显冗余。

class Solution {public int candy(int[] ratings) {int n = ratings.length;if(n == 1) return 1;int sum = n;int[] sub = new int[n];sub[0] = 0;int[] score = new int[n];score[0] = 0;for(int i = 1; i < n; i++) {sub[i] = ratings[i] - ratings[i - 1];}for(int i = 1; i < n; i++) {if((sub[i] > 0 && sub[i - 1] == 0) || (sub[i] > 0 && sub[i - 1] < 0) || (sub[i] < 0 && sub[i - 1] == 0) || (sub[i] < 0 && sub[i - 1] > 0)) {score[i] = 1;}if((sub[i] > 0 && sub[i - 1] > 0) || (sub[i] < 0 && sub[i - 1] < 0)) {score[i] = score[i - 1] + 1;}if(sub[i] == 0) score[i] = 0;}for(int i = 0; i < n; i++) {if(score[i] != 0) sum += score[i];}return sum;}
}

失败案例

知道为啥不通过,但是代码不知道怎么改
在这里插入图片描述


http://www.ppmy.cn/news/1047576.html

相关文章

【3Ds Max】弯曲命令的简单使用

简介 在3ds Max中&#xff0c;"弯曲"&#xff08;Bend&#xff09;是一种用于在平面或曲面上创建弯曲效果的建模命令。使用弯曲命令&#xff0c;您可以将对象沿特定轴向弯曲&#xff0c;从而创建出各种弯曲的几何形状。以下是使用3ds Max中的弯曲命令的基本步骤&…

【Linux】进程间通信之信号机制

文章目录 信号的概念信号的产生硬件产生&#xff08;按键盘中的按键&#xff09;软件产生kill函数kill命令abort函数raise函数 捕捉信号后的处理方式默认处理方式SIG_DFL忽略处理方式SIG_IGN自定义信号处理方式signal函数sigaciotn函数 信号的注册进程中的未决信号集&#xff0…

五、Spring MVC 接收请求参数以及数据回显、乱码问题

文章目录 一、Spring MVC 接收请求参数二、Spring MVC 数据回显三、SpringMVC 返回中文乱码问题 一、Spring MVC 接收请求参数 客户端或者前端通过 URL 请求传递过来的参数&#xff0c;在控制器中如何接收&#xff1f; 1、当参数和 Controller 中的方法参数一致时&#xff0c;无…

HCIP学习--STP

在交换机上的线路冗余会产生的问题 昨天讲到了一个冗余的概念&#xff0c;下面就这个冗余引出来的问题来记录今天的内容 线路的冗余对于路由器来岁意味择可以选择更多的路线&#xff0c;但是对于交换机来说可不是啥好事情 比如下图假设A下面有一台设备要发送一个广播&#x…

[国产MCU]-W801开发实例-W801SDK介绍及启动过程解析

W801SDK介绍及启动过程解析 文章目录 W801SDK介绍及启动过程解析1、W801SDK目录结构解析2、W801SDK启动流程2.1 芯片级启动流程2.2 系统初始化2.3 板级初始化2.4 SDK级启动流程本文将详细介绍W801的SDK及启动过程,为后面的应用开发打下基础。 1、W801SDK目录结构解析 在前面…

Python 编程快速入门

参考引用 Python编程&#xff1a;从入门到实践&#xff08;第2版&#xff09; 1. 环境配置 VSCode 中配置 Python 运行环境 2. 变量和简单数据类型 2.1 变量 添加了一个名为 message 的变量。每个变量都指向一个值&#xff1a;与该变量相关联的信息为指向的值为文本 “Hell…

Android学习之路(8) Activity

本节引言&#xff1a; 本节开始讲解Android的四大组件之一的Activity(活动)&#xff0c;先来看下官方对于Activity的介绍&#xff1a; 移动应用体验与桌面体验的不同之处在于&#xff0c;用户与应用的互动并不总是在同一位置开始&#xff0c;而是经常以不确定的方式开始。例如&…

更新Ubuntu18.04上的CUDA和GCC

问题&#xff1a; 有一台服务器的GPU是1080&#xff0c;有八张卡&#xff0c;已经好久没有人用了。cuda版本是10.1,我现在拿来复现一些论文的模型&#xff0c;经常遇到版本依赖问题&#xff0c;报错Driver is too old。所以要更新一下驱动。遇到的主要问题是gcc版本也太低了&am…