华为OD机考算法题:分奖金

题目部分

题目分奖金
难度
题目说明公司老板做了一笔大生意,想要给每位员工分配一些奖金,想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序,每个人随机抽取一个数字。按照工号的顺序往后排列,遇到第一个数字比自己数字大的,那么,前面的员工就可以获得 距离 * 数字差值 的奖金。如果遇不到比自己数字大的,就给自己分配随机数数量的奖金。例如,按照工号顺序的随机数字是:2,10,3。那么第 2 个员工的数字 10 比第 1 个员工的数字 2 大,所以,第 1 个员工可以获得 1 * (10 - 2) = 8。第 2 个员工后面没有比他数字更大的员工,所以,他获得他分配的随机数数量的奖金,就是 10。第 3 个员工是最后一个员工,后面也没有比他更大数字的员工,所以他得到的奖金是 3。
请帮老板计算一下每位员工最终分到的奖金都是多少钱。
输入描述第一行 n 表示员工数量(包含最后一个老板)。
第二是每位员工分配的随机数字。
例如:
3
2 10 3
输出描述最终每位员工分到的奖金数量。
例如:
8 10 3
补充说明随机数字不重复,员工数量(包含老板)范围 1 ~ 10000,随机数范围 1 ~ 100000。
------------------------------------------------------
示例
示例1
输入3
2 10 3
输出8 10 3
说明


解读与分析

题目解读

此题可翻译成:有一个整形数组,设为 arr,其长度为 n,数组个元素已经初始化为指定的值。对于数组中第 i (0 ≤ i < n)个元素,如果:
1. 在第 ( i + 1 ) 到 n 个元素中存在比 arr[i] 大的元素,如果这样的元素有多个,假设下标最小的元素其下标为 j,那么 arr[i] 的值修改为 ( arr[j] - arr[i] ) * ( j - i)。
2.  
在第 ( i + 1 ) 到 n 个元素中存在比 arr[i] 大的元素,那么 arr[i] 的值保持不变。
最后,输出数组 arr 的内容。

分析与思路

我们可以直接从第 0 个元素开始往后遍历,计算每个元素的值。以为每个元素的值只后排在它后面的元素有关,所以一定要从第 0 个元素开始遍历,而不能从最后一个元素 n - 1 开始遍历。

此方法的时间复杂度 o({n}^2),空间复杂度为 o(1)。


代码实现

Java代码

import java.util.Scanner;/*** 分奖金* @since 2023.09.11* @version 0.1* @author Frank**/
public class BonusDistribution {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String input = sc.nextLine();int count = Integer.parseInt( input );input = sc.nextLine();String[] numbers = input.split( " " );// 此处 count == numbers.count,可以完全不用考虑 count.processBonusDistribution( numbers );}}private static void processBonusDistribution( String numbers[] ){int[] arr = arrString2Int( numbers );for( int i = 0; i < arr.length; i ++ ){for( int j = i + 1; j < arr.length; j ++ ){if( arr[j] > arr[i] ){arr[i] = ( arr[j] - arr[i] ) * ( j - i );break;}}}StringBuffer sb = new StringBuffer();for( int i = 0; i < arr.length; i ++ ){if( i != arr.length - 1 ){sb.append( arr[i] + " " );}else{sb.append( arr[i] );}}System.out.println( sb.toString() );}private static int[] arrString2Int( String numbers[] ){int ret[] = new int[numbers.length];for( int i = 0; i < numbers.length; i ++ ){ret[i] = Integer.parseInt( numbers[i] );}return ret;}}

JavaScript代码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {while (line = await readline()) {// count 可以忽略var count = parseInt(line);line = await readline();var numberArr = line.split(" ");processBonusDistribution(numberArr);}
}();function processBonusDistribution(numberArr) {var arr = arrString2Int( numberArr );for( var i = 0; i < arr.length; i ++ ){for( var j = i + 1; j < arr.length; j ++ ){if( arr[j] > arr[i] ){arr[i] = ( arr[j] - arr[i] ) * ( j - i );break;}}}console.log( arr.join(" "));
}function arrString2Int( numberArr )
{var ret = [];for( var i = 0; i < numberArr.length; i ++){ret.push( parseInt( numberArr[i] ) );}return ret;
}

(完)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5:对yolov5n模型进一步剪枝压缩

YOLOv5&#xff1a;对yolov5n模型进一步剪枝压缩 前言前提条件相关介绍具体步骤修改yolov5n.yaml配置文件单通道数据&#xff08;黑白图片&#xff09;修改models/yolo.py文件修改train.py文件 剪枝后模型大小 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;…

chrome_elf.dll丢失怎么办?修复chrome_elf.dll文件的方法

Chrome是目前最受欢迎的网络浏览器之一&#xff0c;然而有时用户可能会遇到Chrome_elf.dll丢失的问题。该DLL文件是Chrome浏览器的一个重要组成部分&#xff0c;负责启动和管理程序的各种功能。当Chrome_elf.dll丢失时&#xff0c;用户可能无法正常启动Chrome或执行某些功能。本…

springboot jpa手动事务

创建springboot项目 搭建最简单的SpringBoot项目_Steven-Russell的博客-CSDN博客 引入jpa和数据据依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>…

手搓消息队列【RabbitMQ版】

什么是消息队列&#xff1f; 阻塞队列&#xff08;Blocking Queue&#xff09;-> 生产者消费者模型 &#xff08;是在一个进程内&#xff09;所谓的消息队列&#xff0c;就是把阻塞队列这样的数据结构&#xff0c;单独提取成了一个程序&#xff0c;进行独立部署~ --------&…

yolov8 模型部署--TensorRT部署-c++服务化部署

写目录 yolov8 模型部署--TensorRT部署1、模型导出为onnx格式2、模型onnx格式转engine 部署 yolov8 模型部署–TensorRT部署 1、模型导出为onnx格式 如果要用TensorRT部署YOLOv8&#xff0c;需要先使用下面的命令将模型导出为onnx格式&#xff1a; yolo export modelyolov8n.p…

【算法】常见位运算总结

目录 1.基础位运算2. 给一个数n&#xff0c;确定它的二进制表示中的第x位是0还是13.将一个数n的二进制表示的第x位修改成14.将一个数n的二进制表示的第x位修改成0、5. 位图的思想6.提取一个数(n)二进制表示中最右侧的17.干掉一个数(n)二进制表示中最右侧的18.位运算的优先级9.异…

华为OD七日集训第4期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第4期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、数据结构第2天、滑动窗口第3天、贪心算法第4天、二分查找第5天、分治递归第6天、深度优先搜索dfs算法第7天、宽度优选算法&#xff0c;回溯法 六…

SpringBoot2.0(过滤器,监听器,拦截器)

目录 一&#xff0c;过滤器1.1&#xff0c;自定义Filter1.2&#xff0c;启动类代码1.2&#xff0c;创建filter类和LoginFilter包1.2.1&#xff0c;编写loginFilter类 过滤器代码1.2.2&#xff0c;创建二个Controller类 二&#xff0c;监听器2.1&#xff0c;自定义监听器2.2&…

Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程

Tomcat 基本概述 Tomcat 服务器是Apache软件基金会&#xff08;Apache Software Foundation&#xff09;的 Jakarta 项目中的一个核心项目&#xff0c;由 Apache、Sun 和其他一些公司及个人共同开发而成。它是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用…

DNS (Domain Name System) 域名解析过程

一、域名与IP地址 通常情况下一台电脑都会有一个IPv4和IPv6地址&#xff08;由数字和字母组成&#xff0c;难以记忆&#xff09;&#xff0c;所以日常访问网站时我们通常都是采用输入域名&#xff08;方便记忆&#xff09;的方式来访问。 二、域名结构树 www 主机名bilibil…

宋浩高等数学笔记(十二)无穷级数

完结&#xff0c;宋浩笔记系列的最后一更~ 之后会出一些武忠祥老师的错题&笔记总结&#xff0c;10月份就要赶紧做真题了

End-to-End Object Detection with Transformers(论文解析)

End-to-End Object Detection with Transformers 摘要介绍相关工作2.1 集合预测2.2 transformer和并行解码2.3 目标检测 3 DETR模型3.1 目标检测集设置预测损失3.2 DETR架构 摘要 我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程&#xff0c…

C# OpenVino Yolov8 Seg 分割

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp;namespace OpenVino_Yolov8_Demo {public…

WorkPlus AI助理,基于ChatGPT的企业级知识问答机器人

随着人工智能技术的发展&#xff0c;WorkPlus AI助理以ChatGPT对话能力为基础&#xff0c;将企业数据与人工智能相结合&#xff0c;推出了面向企业的知识问答机器人。这一创新性的解决方案帮助企业高效管理和利用自身的知识资产&#xff0c;助力企业级人工智能的构建。与传统的…

腾讯云和阿里云2核2G服务器租用价格表对比

2核2G云服务器可以选择阿里云服务器或腾讯云服务器&#xff0c;腾讯云轻量2核2G3M带宽服务器95元一年&#xff0c;阿里云轻量2核2G3M带宽优惠价108元一年&#xff0c;不只是轻量应用服务器&#xff0c;阿里云还可以选择ECS云服务器u1&#xff0c;腾讯云也可以选择CVM标准型S5云…

如何在 Ubuntu 上安装和使用 Nginx?

ginx&#xff08;发音为“engine-x”&#xff09;是一种流行的 Web 服务器软件&#xff0c;以其高性能和可靠性而闻名。它是许多流行网站使用的开源软件&#xff0c;包括 Netflix、GitHub 和 WordPress。Nginx 可以用作 Web 服务器、负载均衡器、反向代理和 HTTP 缓存等。 它以…

2.linux的组管理和权限管理

一、组管理 1.Linux组的介绍 在linux中每个用户必须属于一个组&#xff0c;不能独立于组外。在linux中每个文件有所有者&#xff0c;所有组&#xff0c;其他组的概念 ①所有者 ②所在组 ③其他组 ④改变用户所在组 2.文件/目录 所有者 哪个用户创建了文件&#xff0c;就…

为什么市面的北斗定位卡都不用5G传输?

当下最流行的通讯产品当属5G产品&#xff0c;数据传输高速率、低延时和大容量的特点&#xff0c;更加适合自动驾驶、ARVR、远程医疗等场景。目前的4G在GPS定位产品上已经远远满足数据传输要求&#xff0c;加上5G模组价格较高&#xff0c;目前国内市面上&#xff0c;几乎没有采用…

java类加载过程

简介 我们知道java程序运行时&#xff0c;.java文件会被编译器变成成.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中&#xff0c;并对数据进行校验&#xff0c;解析和初始化。 最终&#xff0c;每一个类都会在方法区保存一份它的元数据&#xff…

crAPI靶场学习记录

靶场搭建 [靶场下载地址](我fork了一份) docker安装&#xff0c;笔者是用的wsldocker. [lab0:**初始账户 **] 注册一个账户&#xff0c;邮箱为[APIqq.com]&#xff0c;密码为Admin123 登陆后访问对应IP的8025端口&#xff0c;接收邮件获取车辆信息。 [lab1:**访问其它用户车…