华为OD机试【计算最接近的数】(java)(100分)

news2024/9/25 20:40:12

1、题目描述

给定一个数组X和正整数K,请找出使表达式X[i] - X[i+1] … - X[i + K +1],结果最接近于数组中位数的下标i,如果有多个i满足条件,请返回最大的i。
其中,数组中位数:长度为N的数组,按照元素的值大小升序排列后,下标为N/2元素的值。

2、输入描述

第一行输入一个数组X;
第二行输入正整数K;

3、输出描述

数组中位数的下标i。
用例:

输入
[40,50,15,21,9]
2

输出
3

ps:
i为0时,X[0] - X[1] - X[2]- X[3] = 40 - 50 - 15 - 21 = -46;
i=1时,X[1] - X[2]- X[3]- X[4] = 50 - 15 - 21 - 9 = 5i=2时,X[2]- X[3] - X[4]= 15 - 21 - 9 = -15;
i=3时,X[3] - X[4]= 21 - 9 = 12i=4时,X[4]= 9;
因为中位数是21,最接近它的值是12,故输出下角标3

温馨提示!!!
华为OD机试考试官方会对考生代码查重。华为od机试因为有题库所以有很大的概率抽到原题。如果碰到了题库中的原题,千万不要直接使用题解中的代码,一定要做些修改,比如代码中的变量名,除此之外,代码的组织结构和逻辑也要进行一些改变,所以在日常的刷题中,要提前编写好属于自己的代码。

4、题解

先将数组进行排序找出中位数,根据表达式X[i] - X[i+1] … - X[i + K +1],对数组X进行循环遍历,计算结果与中位数的距离,获取结果最接近于数组中位数的下标,如果有多个下标满足条件,请返回最大的下标。
代码如下:

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();
    int[] x = Arrays.stream(str.substring(1, str.length()-1).split(","))
            .mapToInt(Integer::parseInt).toArray();
    int k = Integer.parseInt(sc.nextLine());

    int[] arr = Arrays.copyOf(x, x.length);
    Arrays.sort(arr);
    // 中位数
    int mid = arr[arr.length / 2];
    int val = Integer.MAX_VALUE;
    int index = -1;
    for (int i=0; i<x.length; i++) {
        int sum = x[i];
        for (int j=i+1; j<=i+k && i+k<x.length; j++) {
            sum -= x[j];
        }
        // 求计算结果与中位数的差
        int abs = Math.abs(mid - sum);
        // 获取结果最接近于数组中位数的下标i
        val = Math.min(abs, val);
        // 如果有多个i满足条件,返回最大的
        if (abs == val) {
            index = i;
        }
    }
    System.out.println(index);
}

执行结果如下:
在这里插入图片描述

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

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

相关文章

MP3文件本地存储与下载指南

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、建立存储文件夹 三、获取MP3文件URL并下载 四、优化下载过程 五、总结与…

韩愈,文起八代之衰的儒学巨匠

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 韩愈&#xff0c;字退之&#xff0c;生于唐代宗大历三年&#xff08;公元768年&#xff09;&#xff0c;卒于唐穆宗长庆四年&#xff08;公元82…

Activiti7_使用

Activiti7_使用 一、Activiti7二、绘制工作流三、通过代码部署流程&#xff0c;再对流程进行实例化&#xff0c;完整运行一遍流程即可四、在springbooot中使用 一、Activiti7 为了实现后端的咨询流转功能&#xff0c;学习Activiti7&#xff0c;记录下使用的过程及遇到的问题 二…

力扣 第 399 场周赛 解题报告 | 珂学家 | 调和级数 + 分块DP

前言 T1. 优质数对的总数 I 题型: 签到 class Solution:def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:res 0for v1 in nums1:for v2 in nums2:if v1 % (v2 * k) 0:res 1return resT2. 压缩字符串 III 思路: 模拟 感觉引入一个栈&…

通用代码生成器应用场景三,遗留项目反向工程

通用代码生成器应用场景三&#xff0c;遗留项目反向工程 如果您有一个遗留项目&#xff0c;要重新开发&#xff0c;或者源代码遗失&#xff0c;或者需要重新开发&#xff0c;但是希望复用原来的数据&#xff0c;并加快开发。 如果您的项目是通用代码生成器生成的&#xff0c;…

【量算分析工具-概述】GeoServer改造Springboot番外系列三

背景概述 GIS公司做软件产品&#xff0c;往往绕不开的是量算分析工具的开发和使用。例如做的比较好的火星科技的mars3d产品&#xff0c;如下图&#xff0c;但是往往这些工具都是利用Cesium框架进行前端计算的实现的&#xff0c;网上关于这些量算工具算法原理的文章少之又少&…

石英晶体谐振器的频率与电阻温度特性及其影响因素

石英晶体谐振器是一种常用的电子元件&#xff0c;其具有精确的谐振频率&#xff0c;广泛应用于各种电子设备中&#xff0c;如时钟、频率发生器、滤波器等。石英晶体谐振器的频率和电阻温度特性是评价其性能的重要参数。 1. 频率温度特性&#xff1a; 石英晶体谐振器的频率随温…

身为UI设计老鸟,不学点3D,好像要被潮流抛弃啦,卷起来吧。

当前3D原则在UI设计中运用的越来越多&#xff0c;在UI设计中&#xff0c;使用3D元素可以为界面带来以下几个价值&#xff1a; 增强视觉冲击力&#xff1a;3D元素可以通过立体感和逼真的效果&#xff0c;为界面增添视觉冲击力&#xff0c;使得设计更加生动、吸引人&#xff0c;并…

mac电脑用n切换node版本

一、安装 node版本管理工具 “n” sudo npm install -g n二、检查安装成功&#xff1a; n --version三、查看依赖包的所有版本号 比如: npm view webpack versions --json npm view 依赖包名 versions --json四、安装你需要的版本的node sudo n <node版本号> // 例如…

<iframe>标签的使用

前言&#xff1a; 最近做项目需要使用到腾讯位置服务&#xff08;这个之后分享&#xff09;&#xff0c;其中用到了一个之前一直没用到的标签&#xff1a;&#xff1c;iframe&#xff1e;&#xff0c;一时居然不知道这个是干什么用的。今天分享一下。 下面这段代码是我用来测试…

开发者为什么需要“不良代码”

“从未犯过错误的人也从未有过新发现。” — 塞缪尔斯迈尔斯 想象一下场景&#xff1a;苏格兰&#xff0c;1928年。可能在下雨&#xff0c;一位科学家不小心让他的培养皿被霉菌污染了&#xff0c;他并不知道这个错误最终将拯救数百万人的生命&#xff0c;这项伟大的发现就是青…

了解Hive 工作原理:Hive 是如何工作的?

一、概念 1、Hive Apache Hive 是一个分布式的容错数据仓库系统&#xff0c;可实现大规模分析和便于使用 SQL 读取、写入和管理驻留在分布式存储中的PB级数据。 Hive是建立在Hadoop之上的数据仓库框架&#xff0c;它提供了一种类SQL的查询语言—HiveQL&#xff0c;使得熟悉S…

kettle 读取记事本文件给java组件处理

kettle9.4 用到两个组件 文本文件输入 文件内容如下 文本文件输入---文件 文本文件输入---内容 注意事项&#xff1a;分隔符这里&#xff0c;我一直没注意&#xff0c;导致不管怎么读数据都读不到&#xff1b;可以用换行符&#xff0c;可以用其他的&#xff0c;视情况而定&…

[idea/git] 如何把多模块项目提交到一个仓库

一、问题 我使用idea创建项目&#xff0c;依次创建module进行开发&#xff0c;开发完毕之后&#xff0c;在github上创建仓库&#xff0c;配置后发现&#xff0c;在idea里点击提交时&#xff0c;每个模块各自记录commit&#xff0c;并且每个模块都需要配置origin地址。 二、解…

【数据结构】二叉树和堆

文章目录 一、 什么是二叉树二、 二叉树的存储结构顺序存储视图 三、 堆堆的结构及概念大堆和小堆 四、 建堆五、 堆排序六、 topk问题 一、 什么是二叉树 二叉树&#xff0c;作为一种重要的数据结构&#xff0c;由节点组成&#xff0c;每个节点可以有两个子节点&#xff0c;通…

【UE5.1 角色练习】07-AOE技能

目录 效果 步骤 一、准备技能动画 二、准备粒子特效 三、技能蓝图 四、相机震动 前言 在上一篇&#xff08;【UE5.1 角色练习】06-角色发射火球-part2&#xff09;基础上继续实现角色释放AOE技能的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中添加一个操作映…

Compose Multiplatform 1.6.10 发布,解释一些小问题, Jake 大佬的 Hack

虽然一直比较关注跨平台开发&#xff0c;但其实我很少写 Compose Multiplatform 的内容&#xff0c;因为关于 Compose Multiplatform 的使用&#xff0c;其实我并没在实际生产环境上发布过&#xff0c;但是这个版本确实值得一提&#xff0c;因为该版本包含&#xff1a; iOS Bet…

Vue基础(数据绑定、export使用)

1、简介 在使用vue开发的过程中&#xff0c;经常会遇到一些容易混淆的问题&#xff0c;因此&#xff0c;在本文中进行汇总操作&#xff0c;只有通过不断总结学习&#xff0c;才能更好掌握vue的使用&#xff08;每天进步一点&#xff09;。 2、数据绑定 在js中定义数据&#xf…

基于深度学习和opencv的车牌识别系统

免费获取方式↓↓↓ 项目介绍028&#xff1a; 基于深度学习和opencv的车牌识别系统 同时利用对图片每一帧图像加入视频分析模块 图片分析模块可以依据界面按钮提示进行相应功能 视频分析模块可以根据按钮提示进行对视频的分析 &#xff08;视频模块的视频追踪处理时间较长&…

知攻善防应急响应靶机训练-Web2

前言&#xff1a; 本次应急响应靶机采用的是知攻善防实验室的Web-2应急响应靶机 靶机下载地址为&#xff1a; https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:Zgsfqq.com 解题过程&#xff1a; 一、攻击者的IP地址&#xff08;两个&#xff09;…