华为OD机试真题 JavaScript 实现【分糖果】【2022Q2 200分】,附详细解题思路

news2024/12/23 18:27:15

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、JavaScript算法源码
    • 六、效果展示

专栏导读

本专栏收录于《华为OD机试(JavaScript)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

在这里插入图片描述

一、题目描述

小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。

当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。

小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

二、输入描述

抓取的糖果数(<10000000000):

27

三、输出描述

最少分至一颗糖果的次数:

7

啥意思呢?

  1. 27+1=28
  2. 28/2=14
  3. 14/2=7
  4. 7+1=8
  5. 8/2=4
  6. 4/2=2
  7. 2/2=1

懂了?

四、解题思路

  1. 读取输入的糖果数量 sum;
  2. 调用递归函数 count(sum, 0),传入糖果数量和初始操作次数 0;
  3. 在递归函数中,首先判断糖果数量是否小于等于 1,如果是,则返回当前的操作次数;
  4. 如果糖果数量是偶数,递归调用 count(sum/2, count + 1),糖果数量除以 2,操作次数加一;
  5. 如果糖果数量是奇数,递归调用 Math.min(count(sum + 1, count + 1), count(sum - 1, count + 1)),分别对糖果数量加一和减一进行递归调用,取操作次数较少的结果;
  6. 返回最终的操作次数。

五、JavaScript算法源码

// 定义一个递归函数,用于计算能够分配的最大糖果数
function countCandies(sum, count) {
  // 如果将糖果平均分配后,每个人最多只能得到 1 颗糖果,直接返回当前计数值
  if (sum <= 1) {
    return count;
  }
  // 如果糖果总数是偶数,将糖果平均分配
  if (sum % 2 === 0) {
    return countCandies(sum / 2, count + 1);
  }
  // 如果糖果总数是奇数,将其加一或减一变为偶数,并递归计算
  return Math.min(
    countCandies(sum + 1, count + 1), // 加一后递归计算
    countCandies(sum - 1, count + 1) // 减一后递归计算
  );
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

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

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

Windows Bat实现延时功能的几种常见方式

文章目录 1. 使用ping命令实现延时2. 使用timeout命令实现延时3. 使用choice命令实现延时4. 使用for循环实现延时5. 使用sleep命令实现延时6. 使用VBScript.sleep实现延时总结 在 bat批处理中实现延时功能的几种常用方式 1. 使用ping命令实现延时 使用ping命令可以实现延时的…

mysql备份,视图

一、备份与还原 1.设计样例表 CREATE DATABASE booksDB; use booksDB; --创建表book2 CREATE TABLE books(bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL); --创建表authors CREATE TABLE authors(auth_id INT NOT NULL PRIM…

java学习路程之篇六、知识点、算数运算符、自增自减运算符、类型转换

文章目录 1、算术运算符2、自增自减运算符3、类型转换 1、算术运算符 2、自增自减运算符 3、类型转换

Serverless是什么?如何使用?有哪些优势?国内外有哪些Serverless平台?

111. Serverless是什么&#xff1f;如何使用&#xff1f;有哪些优势&#xff1f;国内外有哪些Serverless平台&#xff1f; 一、 Serverless是什么&#xff1f; 百度百科 Serverless 是云计算的一种模型。以平台即服务&#xff08;PaaS&#xff09;为基础&#xff0c;无服务器…

【沐风老师】3DMAX灯光放置插件LightPlacer使用方法教程

3DMAX灯光放置插件LightPlacer使用方法 3DMAX灯光放置插件LightPlacer&#xff0c;用于3dMax放置和管理灯光的插件&#xff0c;可以在3dMax中一键制作所需的灯光&#xff0c;且通过插件创建出来的灯光属性可以在该面板下进行直接修改&#xff0c;并不需要切换至堆栈。该插件的有…

接口自动化测试实践指导(下):接口自动化测试断言设置思路

1 断言设置思路 这里总结了我在项目中常用的5种断言方式&#xff0c;基本可能满足90%以上的断言场景&#xff0c;具体参见如下脑图&#xff1a; 下面分别解释一下图中的五种思路&#xff1a; 1&#xff09; 响应码 对于http类接口&#xff0c;有时开发人员只是通过设置接口响…

IDEA的火焰图简单使用

1. 火焰图是什么&#xff1f; 简单来说就是用来查看程序耗时的一张图 如何读懂火焰图&#xff1f; 2. mac上如何生成火焰图 找了一圈&#xff0c;原来idea原本就支持… 3. 测试代码 package org.example;import java.util.ArrayList; import java.util.List; import java.…

QT Quick初学笔记---第一篇

1、对Qt Quick的初步认识 Qt Quick是Qt5界面开发技术的统称&#xff0c;是以下几种技术的集合&#xff1a; QML&#xff1a;界面标记语言JavaScript&#xff1a;动态脚本语言QT C&#xff1a;跨平台C封装库 QML是与HTML类似的一种标记语言。 QML文件采用.qml作为文件格式后…

C语言、C++和C#:区别与特点的比较

C语言、C和C#是三种不同的编程语言&#xff0c;它们在以下几个方面存在区别&#xff1a; 设计宗旨&#xff1a;C语言是一种过程式编程语言&#xff0c;旨在提供高效的系统级编程。C是在C语言基础上发展而来的&#xff0c;既支持过程式编程&#xff0c;也支持面向对象编程。C#是…

C++图形开发(14):游戏完善——无限空中起跳解决

文章目录 1.问题描述2.如何解决&#xff1f;3.整段代码 1.问题描述 在游玩过程中&#xff0c;我们肯定发现了之前所给出的游戏源码中的一个小bug&#xff1a; 小球可以空中无限起跳&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…

Mysql进阶-

1、存储引擎 1.1 MySQL体系结构 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层 第二层架构主要完成大多数的核心服务功能&#xff0c;如SQL接口,并完成缓存…

安装VMtools

VM17上安装VMtools 遇到的问题: 安装VMware tools是灰色的 解决办法 关闭虚拟机,编辑虚拟机设置 最后点击确定&#xff0c;开启虚拟机 虚拟机->重新安装VMtools&#xff0c;点击即可&#xff0c;若没有点击&#xff0c;那就需要关机&#xff0c;再开机了 正常情况下&am…

【005】基于深度学习的图像语 通信系统

摘要 语义通信是一种新颖的通信方式&#xff0c;可通过传输数据的语义信息提高带宽效率。提出一种用于无线图像传输的系统。该系统基于深度学习技术开发并以端到端&#xff08;E2E&#xff09;的方式进行训练。利用深度学习实现语义特征的提取和重建&#xff0c;在发送端提取信…

【thinkpad电脑重装系统后双指滑动失效】

我的电脑在前段时间重装系统了&#xff0c;然后触控板一直用不了&#xff0c;但是平时用键盘比较多&#xff0c;没太在意&#xff0c;最近在宿舍&#xff0c;敲击键盘会影响室友睡觉&#xff0c;然后决心要弄好电脑触控板。 网上提及的方法很多&#xff0c;比如通过设备管理器…

利用MMSegmentation微调Mask2Former模型

前言 本文介绍了专用于语义分隔模型的python库mmsegmentation&#xff0c;github项目地址&#xff0c;运行环境为Kaggle notebook&#xff0c;GPU为P100针对环境配置、预训练模型推理、在西瓜数据集上微调新sota模型mask2former模型&#xff0c;数据说明由于西瓜数据集较小&am…

【从零开始学习JAVA | 第二十八篇】不可变集合

目录 目录 前言&#xff1a; 不可变集合&#xff1a; 常见的不可变集合&#xff1a; 1.创建list的不可变集合&#xff1a; 2.创建map的不可变集合&#xff1a; 应用场景&#xff1a; 总结&#xff1a; 前言&#xff1a; 本文我们将为大家介绍JAVA中的不可变集合&#x…

第四十七章Java枚举(enum)详解:Java声明枚举类型、枚举(enum)类、EnumMap 与 EnumSet

枚举是一个被命名的整型常数的集合&#xff0c;用于声明一组带标识符的常数。枚举在曰常生活中很常见&#xff0c;例如一个人的性别只能是“男”或者“女”&#xff0c;一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时&#xff0c;就可以将它定义为…

今天实习第二天 ,vue

由于这是一次新的项目&#xff0c;有几个技术&#xff0c;docker&#xff0c;vue 老板要我学习vue。 这里我安装的是node.js&#xff0c;但是操作的时候用的是idea&#xff0c;因为vue插件集成在idea中。 01.vue的技术 vue是MVVM的履行者。 02.第一个vue程序 第一步&#xff1…

C基础day9(2023.7.11)

一、Xmind整理&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;实现字符串逆置 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {char str[]"hello";char *pstr;char *qstrstrlen…

UE编辑器灯光颜色,能量传入Shader流程

编辑器界面&#xff1a; 代码流程&#xff1a; FLinearColor ULightComponent::GetColoredLightBrightness() const {// Brightness in Lumensfloat LightBrightness ComputeLightBrightness();FLinearColor Energy FLinearColor(LightColor) * LightBrightness;if (bUseTem…