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

企业建站模板库存软件

企业建站模板,库存软件,宁德seo培训,常用的网站开发语言题目描述:n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计…

题目描述: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();//数组求和,但是效率低}
}
http://www.yayakq.cn/news/71609/

相关文章:

  • 网站空间是服务器吗网站权重6了该则么做优化方案
  • 上海空灵网站设计好的网站建设技术
  • 网站联盟广告如何建设提卡网站
  • 佛山做网站建设公司中国航发网上商城网址
  • 自己的网站做app对网站备案的认识
  • 多个域名指定同一个网站好处国办网站建设要求
  • 大学做视频网站设计网站开发服务内容
  • 重庆万州网站建设公司电话大连做网站需要多少钱
  • 滨海营销型网站建设9k9k网页游戏开服表
  • 学校网站建设介绍wordpress分类显示
  • 有域名怎样做网站淮安网站建设设计制作
  • 建站怎么赚钱wordpress页面跳转
  • 株洲品牌网站建设租服务器 wordpress
  • diy网站建设源码网站建设教程视频西瓜
  • 做童鞋的一些外贸网站自己怎么做彩票网站
  • 网站建设海淀区台州网站建设技术支持
  • 淮安建立公司网站流程苏州电子商务网站开发公司
  • 创建了网站qq直接登录网站无需下载
  • 老河口网站定制企业关键词优化价格
  • 学校的网站建设费如何入账盘石做的网站
  • 做网站与网页有什么区别sem是什么意思中文
  • 电商手机网站开发婚庆公司加盟
  • 怎么用外国的服务器做网站沈阳网站制作公司和服务器
  • 请人做外贸网站应注意什么问题可以在什么网站做二建题目
  • 电脑怎么创建网站吗遵义网站建设价格
  • 南通哪里做网站西安到北京防疫政策
  • 做电影下载网站好电视剧怎么做短视频网站
  • 网站建设培训中心信息化设计公司排名
  • 光辉网站建设有个专门做装修的网站
  • 网站开发与桌面应用开发中国建设银行西平支行网站