【2024华为OD-E卷-200分-数值同化】(题目+思路+JavaC++Python解析)

题目描述

题目名称:数值同化

题目背景: 在一个数值同化过程中,你需要将一组数值进行特定的处理,使得它们能够“同化”到一个目标值附近。具体做法是,给定一个数组 nums 和一个目标值 target,你需要对数组中的每个元素进行操作,使得数组中的所有元素都尽可能接近 target。

输入

  • nums:一个包含整数的数组,表示需要进行同化的数值。
  • target:一个整数,表示同化目标值。

输出

  • 返回同化后的数组,数组中的每个元素都是经过处理后尽可能接近 target 的值。同化规则如下:
    1. 如果 nums[i] < target,则同化后的值为 nums[i] + diff,其中 diff 是 target 与 nums[i] 的差值的一半(向上取整)。
    2. 如果 nums[i] >= target,则同化后的值为 nums[i] 减去 diff,其中 diff 是 target 与 nums[i] 差值的一半(向下取整)。

示例

输入:nums = [1, 3, 5, 7], target = 4
输出:[3, 4, 4, 5]
解释:
1 < 4,同化后为 1 + (4 - 1) // 2 + 1 = 3
3 < 4,同化后为 3 + (4 - 3) // 2 + 0 = 4
5 >= 4,同化后为 5 - (5 - 4) // 2 = 4
7 >= 4,同化后为 7 - (7 - 4) // 2 = 5

思路

  1. 遍历数组:我们需要遍历数组中的每个元素。
  2. 计算差值:对于每个元素,计算它与目标值的差值。
  3. 同化规则
    • 如果当前元素小于目标值,则增加差值的一半(向上取整)。
    • 如果当前元素大于等于目标值,则减少差值的一半(向下取整)。
  4. 存储结果:将同化后的值存储在新的数组中,并返回该数组。

Java 代码解析

import java.util.Arrays;

public class NumericalAssimilation {
    public static int[] assimilate(int[] nums, int target) {
        int[] result = new int[nums.length];
        for (int i = 0; i < nums.length; i++) {
            int diff = Math.abs(nums[i] - target);
            if (nums[i] < target) {
                result[i] = nums[i] + (diff + 1) / 2; // 向上取整
            } else {
                result[i] = nums[i] - diff / 2; // 向下取整
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[] nums = {1, 3, 5, 7};
        int target = 4;
        int[] assimilated = assimilate(nums, target);
        System.out.println(Arrays.toString(assimilated)); // 输出:[3, 4, 4, 5]
    }
}

C++ 代码解析

#include <iostream>
#include <vector>
#include <cmath>

std::vector<int> assimilate(const std::vector<int>& nums, int target) {
    std::vector<int> result(nums.size());
    for (size_t i = 0; i < nums.size(); ++i) {
        int diff = std::abs(nums[i] - target);
        if (nums[i] < target) {
            result[i] = nums[i] + (diff + 1) / 2; // 向上取整
        } else {
            result[i] = nums[i] - diff / 2; // 向下取整
        }
    }
    return result;
}

int main() {
    std::vector<int> nums = {1, 3, 5, 7};
    int target = 4;
    std::vector<int> assimilated = assimilate(nums, target);
    for (int num : assimilated) {
        std::cout << num << " ";
    }
    // 输出:3 4 4 5
    return 0;
}

Python 代码解析

def assimilate(nums, target):
    result = []
    for num in nums:
        diff = abs(num - target)
        if num < target:
            result.append(num + (diff + 1) // 2)  # 向上取整
        else:
            result.append(num - diff // 2)  # 向下取整
    return result

nums = [1, 3, 5, 7]
target = 4
assimilated = assimilate(nums, target)
print(assimilated)  # 输出:[3, 4, 4, 5]

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

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

相关文章

【HUAWEI】HCIP-AI-MindSpore Developer V1.0 | 结课测试

目录 一 单选 二 多选 三 判断 四 填空 一 单选 1 一张图片在存放过程中出现了很多小的噪声&#xff0c;或白或黑&#xff0c;对其扫描进行以下哪一个操作的去噪效果最好&#xff1f; A.均值滤波 B.中值滤波 C.高斯滤波 D.拉普拉斯滤波 2 以下哪个方法中使用了掩码语…

ESP32-S3模组上实现低功耗(6)

接前一篇文章:ESP32-S3模组上实现低功耗(5) 本文内容参考: 系统低功耗模式介绍 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 电源管理 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档

chrome浏览器的更新提示弹窗无法更新Chrome解决方法

使用组策略编辑器 此方法适用于 Windows 系统且系统为专业版及以上版本&#xff0c;家庭版系统没有组策略功能。 按下Win R键&#xff0c;打开 “运行” 对话框&#xff0c;输入gpedit.msc并回车&#xff0c;打开组策略编辑器。 在组策略编辑器中&#xff0c;依次展开 “计算机…

高山旅游景区有效降低成本,无人机山下到山上物资吊运技术详解

在高山旅游景区&#xff0c;传统的物资运输方式往往面临人力成本高昂、效率低下等问题&#xff0c;而无人机技术的引入为这一难题提供了新的解决方案。以下是对无人机从山下到山上进行物资吊运技术的详细解析&#xff1a; 一、无人机物资吊运技术的优势 1. 降低人力成本&#…

读博生涯记录2 __ 2025.1.8 --- 关于博一上学期的一些经历和感受

时间过得好快&#xff0c;2024年8月底入学至今都快半年了。学校已经放寒假了&#xff0c;我也计划过多几天就回去&#xff0c;在这个太阳早已落山的午后&#xff0c;在这工位区的一隅&#xff0c;想着记录一下本学期我的一些经历和感受。 专业上&#xff1a;本学期我给自己的规…

Python爬虫 - 豆瓣图书数据爬取、处理与存储

文章目录 前言一、使用版本二、需求分析1. 分析要爬取的内容1.1 分析要爬取的单个图书信息1.2 爬取步骤1.2.1 爬取豆瓣图书标签分类页面1.2.2 爬取分类页面1.2.3 爬取单个图书页面 1.3 内容所在的标签定位 2. 数据用途2.1 基础分析2.2 高级分析 3. 应对反爬机制的策略3.1 使用 …

2501d,d17年前就有了编译时

D在17年前就有了编译时!D功能稳步进入其他语言. :此处的编译时关键字指示在编译时运行它前面的块. D不使用关键字来触发它.触发它的是"常 式".当然,必须在编译时可计算常式.如: int sum(int a, int b) > a b; void test() {int s sum(3, 4); //在运行时运行,e…

Taro地图组件和小程序定位

在 Taro 中使用腾讯地图 1.首先在项目配置文件 project.config.json 中添加权限&#xff1a; {"permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}} }2.在 app.config.ts 中配置&#x…

深度学习——回归实战

线性回归&#xff1a; 线性&#xff1a;自变量和应变量之间是线性关系&#xff0c;如&#xff1a;y wx b 回归&#xff1a;拟合一条曲线&#xff0c;使真实值和拟合值差距尽可能小 目标&#xff1a;求解参数w和b 所用算法&#xff1a;梯度下降算法 梯度下降&#…

Angular 最新版本和 Vue 对比完整指南

1. Angular 最新版本 当前 Angular 最新稳定版本是 Angular 17(2024年初) 2. 主要区别对比表 特性 | Angular | Vue 框架类型 | 完整框架 | 渐进式框架 默认语言 | TypeScript | JavaScript/TypeScript 数据处理 | RxJS | Promise/async/await 架构特点 | 依赖注入,…

单片机-串转并-74HC595芯片

1、74HC595芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器&#xff0c;其中并行输出为三态输出&#xff08;即高电平、低电平和高阻抗&#xff09;。 15 和 1 到 7 脚 QA--QH&#xff1a;并行数据输出 9 脚 QH 非&#xff1a;串行数据输出 10 脚 SCLK 非&#x…

探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比

文章目录 个人感受一、AI绘图流程1.1 Midjourney&#xff08;1&#xff09;环境配置&#xff08;2&#xff09;生成prompt&#xff08;3&#xff09;完善prompt&#xff08;4&#xff09;开始绘图&#xff08;5&#xff09;后处理 1.2 ChatGPT不合理的出图结果解决方案 二、主题…

【微服务】6、限流 熔断

线程隔离与容错处理 本视频主要讲解了在购物车业务中&#xff0c;因商品微服务响应慢导致的问题及解决方案&#xff0c;重点介绍了线程隔离后查询购物车业务不可用的情况&#xff0c;以及如何通过Fallback逻辑进行缓解&#xff0c;包括配置Feign调用为簇点资源、添加Fallback逻…

springboot+vue使用easyExcel实现导出功能

vue部分 // 导出计算数据exportDataHandle(id) {this.$http({url: this.$http.adornUrl(/xxx/xxx/exportCalDataExcel),method: post,data: this.$http.adornData({id: id}),responseType: blob, // 重要&#xff1a;告诉axios我们希望接收二进制数据}).then(({data}) > {c…

25年01月HarmonyOS应用基础认证最新题库

判断题 “一次开发&#xff0c;多端部署”指的是一个工程&#xff0c;一次开发上架&#xff0c;多端按需部署。为了实现这一目的&#xff0c;HarmonyOS提供了多端开发环境&#xff0c;多端开发能力以及多端分发机制。 答案&#xff1a;正确 《鸿蒙生态应用开发白皮书》全面阐释…

ELK实战(最详细)

一、什么是ELK ELK是三个产品的简称&#xff1a;ElasticSearch(简称ES) 、Logstash 、Kibana 。其中&#xff1a; ElasticSearch&#xff1a;是一个开源分布式搜索引擎Logstash &#xff1a;是一个数据收集引擎&#xff0c;支持日志搜集、分析、过滤&#xff0c;支持大量数据…

Dubbo-笔记随记一

一、实战 1 . Springboot整合 1.1 服务提供者 1.1.1 依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.2.10</version></dependency><dependency&g…

git tag

文章目录 1.简介2.格式3.选项4.示例参考文献 1.简介 同大多数 VCS 一样&#xff0c;Git 也可以对某一时间点的版本打上标签&#xff0c;用于版本的发布管理。 一个版本发布时&#xff0c;我们可以为当前版本打上类似于 v.1.0.1、v.1.0.2 这样的 Tag。一个 Tag 指向一个 Commi…

ETCD渗透利用指南

目录 未指定使用put操作报错 未指定操作版本使用get报错 首先etcd分为两个版本v2和v3&#xff0c;不同的API结果无论是访问URL还是使用etcdctl进行通信&#xff0c;都会导致问题&#xff0c;例如使用etcdctl和v3进行通信&#xff0c;如果没有实名ETCDCTL_API3指定API版本会直接…

使用VUE3创建个人静态主页

使用VUE3创建个人静态主页 &#x1f31f; 前言&#x1f60e;体验&#x1f528; 具体实现✨ 核心功能&#x1f3d7;️ 项目结构&#x1f680; 用这个项目部署 Git Page &#x1f4d6; 参考 &#x1f31f; 前言 作为开发者或者内容创作者&#xff0c;我们经常需要创建静态网页&a…