华为OD机试真题 JavaScript 实现【取出尽量少的球】【2023Q1 200分】,附详细解题思路

news2024/9/21 20:53:42

在这里插入图片描述

目录

    • 一、题目描述
      • 游戏规则如下:
      • 限制规则一:
      • 限制规则二:
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、JavaScript算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

某部门开展 Family Day 开放日活动,其中有个从桶里取球的游戏。

游戏规则如下:

有 N 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 bucketBallNums 中。

游戏开始时,要求所有桶的小球总数不能超过 SUM,如果小球总数超过 SUM,则需对所有的小桶统一设置一个容量最大值 maxCapacity 并需将超过容量最大值的小球拿出来,直至小桶里的小球数量小于 maxCapacity。

请您根据输入的数据,计算从每个小桶里拿出的小球数量。

限制规则一:

所有小桶的小球总和小于 SUM,则无需设置容量值 maxCapacity,并且无需从小桶中拿球出来,返回结果[]。

限制规则二:

如果所有小桶的小球总和大于 SUM,则需设置容量最大值 maxCapacity,并且需以小中拿球出来,返回从每小出的小球教量组成的数组。

二、输入描述

第一行输入 2 个正整数,数字之间使用空格隔开,其中第一个数字表示 SUM,第二个数字表示 bucketBallNums 数组长度;

第二行输入 N 个正整数,数字之间使用空格隔开,表示 bucketBallNums 的每一项;

三、输出描述

找到一个 maxCapacity,来保证取出尽量少的球,并返回从每个小桶拿出的小球数量组成的数组。

四、解题思路

  1. 从max开始递减遍历,依次尝试设置容量最大值 maxCapacity;
  2. 遍历每个小桶,计算从每个小桶中拿出的小球数量,并将其累加到total;
  3. 如果total小于等于小球最大总数sum,说明已经找到了满足条件的maxCapacity;
  4. 更新每个小桶中拿出的小球数量;
  5. 如果没有找到满足条件的maxCapacity,则尝试下一个maxCapacity的值;
  6. 如果所有的maxCapacity值都试过了,仍然没有找到满足条件的maxCapacity值,则输出空数组;

五、JavaScript算法源码

function findMaxCapacity(sum, bucketBallNums) {
  const n = bucketBallNums.length;
  let count = 0;
  let maxNum = 0;
  for (let i = 0; i < n; i++) {
    count += bucketBallNums[i];
    maxNum = Math.max(bucketBallNums[i], maxNum);
  }

  if (count <= sum) {
    return [];
  }

  const min = Math.floor(sum / n);
  let max = maxNum;
  let total = 0;
  for (let i = max; i >= min; i--) {
    for (let j = 0; j < n; j++) {
      total += Math.min(i, bucketBallNums[j]);
    }

    if (total <= sum) {
      for (let j = 0; j < n; j++) {
        bucketBallNums[j] = Math.max(0, bucketBallNums[j] - i);
      }
      return bucketBallNums;
    }
    total = 0;
  }

  return [];
}

六、效果展示

1、输入

3 3
1 2 3

2、输出

[0, 1, 2]

3、说明

小球总数为6,sum为3,超出范围,需要从小桶中取出球,maxCapacity = 1,小球总数为3,从1号桶取0个球,从2号桶取1个球,从3号桶取2个球。


🏆下一篇:华为OD机试真题 JavaScript 实现【贪心的商人】【2023Q1 100分】

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《golang设计模式》第一部分·创建型模式-04-抽象工厂模式(Abstract Factory)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 1.1 角色 AbstractFactory&#xff08;抽象工厂&#xff09;&#xff1a;它声明了一组用于创建产品的方法&#xff0c;每一个方法对应一种产品。ConcreteFactory&#xff08;具体工厂&#xf…

phpstudy 进行 composer 全局配置

背景 因为注意到&#xff0c;使用 phpStudy 进行环境搭建时&#xff0c;有时需要使用 composer 每次都需要查找资料进行配置&#xff0c; 在此进行记录笔记&#xff0c;方便有需要的道友借鉴 配置 版本&#xff1a;composer1.8.5&#xff08;phpStudy8 当前只能安装这一个版本…

CAD批量转PDF的简单方法,三个步骤轻松完成转换

PDF格式的图纸可以在各种设备和软件上打开&#xff0c;因为PDF是一种跨平台的格式&#xff0c;不受操作系统或软件版本的影响。这意味着CAD图纸可以更容易地在不同的设备和操作系统之间传输&#xff0c;而无需担心兼容性问题&#xff0c;可以使图纸更易于共享、浏览和保护&…

Vue进阶(幺叁陆): transition标签实现页面跳转动画

文章目录 一、前言二、方案实现三、延伸阅读 transition标签四、拓展阅读 一、前言 在Vue项目开发过程中&#xff0c;应用全家桶vue-router实现路由跳转&#xff0c;且页面前进、后退跳转过程中&#xff0c;分别对应不同的切换动画。vue-router 切换页面时怎么设置过渡动画&am…

Pytorch深度学习-----神经网络之非线性激活的使用(ReLu、Sigmoid)

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用&#xff08;ToTensor&#xff0c;Normalize&#xff0c;Resize &#xff0c;Co…

Doccano工具安装教程/文本标注工具/文本标注自己的项目/NLP分词器工具/自然语言处理必备工具/如何使用文本标注工具

这篇文章是专门的安装教程&#xff0c;后续的项目创建&#xff0c;如何使用&#xff0c;以及代码部分可以参考这篇文章&#xff1a; NER实战&#xff1a;(NLP实战/命名实体识别/文本标注/Doccano工具使用/关键信息抽取/Token分类/源码解读/代码逐行解读)_会害羞的杨卓越的博客-…

【uniapp 样式】使用setStorageSync存储历史搜索记录

<template><view><view class"zhuangbox u-flex"><u--inputplaceholder"请输入关键字搜索"border"surround"shapecircleprefixIcon"search"prefixIconStyle"font-size: 22px;color: #909399"v-model&q…

vSphere ESXI 7.0 网络规划

ESXi 网络 业务网络、Vmotion&#xff08;漂移&#xff09;、管理网络、存储网络 ESXi 管理网络 vCenter Server 管理网络 vCenter Server SSO域名 Single Sign-on域名&#xff1a;在没有指定的情况下&#xff0c;默认填写 vsphere.local VMware vSphere整体解决方案和网络…

uniapp点击图片放大预览

阐述 有些时候我们在用uniapp显示图片时&#xff0c;有的不宜全部显示到屏幕上&#xff0c;uniapp提供了一个非常好用的api。 实现方式如下&#xff1a; <template><view class"content"><image class"logo" src"/static/images/a.…

Nacos 持久化实例 删不掉问题( Please unregister instance first )

文章目录 一、报错现象&#xff1a;二、问题解决过程&#xff1a;三、最终解决方案&#xff1a;四、注销实例API&#xff1a; &#x1f50e;请直接看第三部分&#x1f50e; 一、报错现象&#xff1a; 二、问题解决过程&#xff1a; 尝试将服务下线&#xff1a; 再次点击删除按…

如何在水务行业运用IPD?

水务行业&#xff0c;包括自来水的生产和供应、水务及其再生利用和其他水的处理、利用与分配。水务行业主要环节分布包括原水生产与供应、自来水生产和供应、污水收集、水务、中水与再生水利用等。 我国水务行业的产业链包括上游、中游、下游。上游包括科研和规划设计、设备及材…

英雄的力量【力扣2681】

1、解题思路 将数组按从大到小的顺序排列&#xff0c;i<j&#xff0c;那么以nums[i]开始&#xff0c;nums[j]结尾&#xff0c;i----j中的任意数&#xff0c;组成的排列&#xff0c;其英雄力量都是nums[i]*nums[i]*nums[j]&#xff1b; 若ij&#xff0c;则只有一种排列组合…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包&#xff0c;为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行&#xff0c;进入到破解器所在文…

AndroidBanner - ViewPager

解决banner 不可见依旧轮播的问题 思考一下&#xff1a;什么时候可以轮播&#xff0c;什么时候不可以轮播 当Banner添加到屏幕上&#xff0c;且对用户可见的时候&#xff0c;可以开始轮播 当Banner从屏幕上移除&#xff0c;或者Banner不可见的时候&#xff0c;可以停止轮播 当…

排序进行曲-v2.0

小程一言 这篇文章是在排序进行曲1.0之后的续讲&#xff0c; 0之后的续讲,英语在上一篇讲的排序的基本概念与分类0之后的续讲, 英语在上一篇讲的排序的基本概念与分类这片主要是对0之后的续讲,英语在上一篇讲的排序的基本概念与分类这 篇主要是对几个简单的排序进行细致的分析…

Mr. Cappuccino的第55杯咖啡——Mybatis一级缓存二级缓存

Mybatis一级缓存&二级缓存 概述一级缓存特点演示前准备效果演示在同一个SqlSession中在不同的SqlSession中 源代码怎么禁止使用一级缓存一级缓存在什么情况下会被清除 二级缓存特点演示前准备效果演示在不同的SqlSession中 源代码怎么关闭二级缓存 一级缓存&#xff08;Spr…

【css】css调整文本间距

text-indent 属性用于指定文本第一行的缩进letter-spacing 属性用于指定文本中字符之间的间距line-height 属性用于指定行之间的间距&#xff1a;word-spacing 属性用于指定文本中单词之间的间距&#xff0c;这个和letter-spacing类似white-space 属性指定元素内部空白的处理方…

Java面向对象之方法的使用

文章目录 一、什么是方法二、方法的声明格式三、方法的分类四、方法的调用五、方法的注意点六、方法的重载七、可变形参的方法八、方法参数的值传递机制九、递归方法 一、什么是方法 方法(method)是类或对象行为特征的抽象&#xff0c;用来完成某个功能操作。在某些语言中也称…

JavaScript将CSV文件转为JSON

说在前面 相信平时大家或多或少都会有遇到过类似的情况&#xff1a; &#x1f64e;&#xff08;需求小姐姐&#xff09; &#x1f64e;‍♂&#xff08;我&#xff09; &#x1f64e;&#xff1a;这里我们需要做一个省市联动下拉框&#xff0c;你看看可以做吗&#xff1f; &am…

基于SSM 应急指挥平台-计算机毕设 附源码 13263

SSM应急指挥平台 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0…