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

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

分发糖果

力扣链接: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.lryc.cn/news/132601.html

相关文章:

  • iOS 通知推送服务端部署测试过程详细版
  • 【COMP282 LEC3 LEC4 LEC5】
  • panda3d加载模型复习和python面向对象编程属性学习
  • 使用 Node.js 生成优化的图像格式
  • 【WinAPI详解】<CreateWindowEx详解>
  • 【Git】分支管理
  • 玩转单元测试之gtest
  • Tomcat 一次请求的生命周期
  • spring cloud gateway中配置uri
  • 使用NAudio录制wav音频
  • 数据结构之动态内存管理机制
  • 【汇编语言】栈及栈操作的实现
  • 【JavaEE】面向切面编程AOP是什么-Spring AOP框架的基本使用
  • SpringBoot+微信小程序奶茶在线点单小程序系统 附带详细运行指导视频
  • 【支付宝小程序】开发基础--文件结构教程
  • LLM 生成式配置的推理参数温度 top k tokens等 Generative configuration inference parameters
  • npm的镜像源和代理的查看和修改
  • IP库新增经过实践的Verilog 库
  • SLAM-VIO视觉惯性里程计
  • 分布式 RPC 框架入门
  • Spring boot与Spring cloud 之间的关系
  • 报名开启 | HarmonyOS第一课“营”在暑期系列直播
  • Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!
  • matlab使用教程(17)—广度优先和深度优先搜索
  • CSerialPort教程4.3.x (2) - CSerialPort源码简介
  • 【数据结构OJ题】有效的括号
  • Java性能分析中常用命令和工具
  • JVM性能分析-jstat工具观察gc频率
  • mysql 查询报错 1267 - Illegal mix of collations
  • 【ARM】Day6