news 2026/7/1 7:25:47

华为OD机试2025C卷-计算最接近的数[200分]( Java _ Python3 _ C++ _ C语言 _ JsNode _ Go)实现100%通过率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试2025C卷-计算最接近的数[200分]( Java _ Python3 _ C++ _ C语言 _ JsNode _ Go)实现100%通过率

📫 个人主页:深夜coding算法
📣 专栏系列:2026年华为最新OD机试题库详解
🔥 一次订阅,永久解锁 | 持续更新100+篇 | 6语言全覆盖


文章目录

    • ❄️前言:
    • ☀️一:题目描述
      • 🌙 题目名称
      • 🌙 题目内容
      • 🌙 输入描述
      • 🌙 输出描述
      • 🌙 示例
    • ☀️二:解题思路
    • ☀️三:代码实现
      • C++
      • Java
      • Python3
      • C语言
      • JavaScript
      • Go
    • ☀️四:复杂度分析
    • ⭐ 五:易错点
      • 坑1:前缀和数组长度是N+1
      • 坑2:差值是绝对值
    • 🌻共勉:

❄️前言:

200分题,要求在一个数组中找一个长度K的区间,使得区间和的绝对值与目标值T的差最小。前缀和+滑动窗口,两层优化。前缀和把区间和降到O(1),滑动窗口遍历所有K长度区间。


☀️一:题目描述

🌙 题目名称

计算最接近的数


🌙 题目内容

给定一个长度为 N 的整数数组和一个目标值 T,要求找出一个长度为 K 的连续子数组,使得该子数组的元素之和与 T 的差的绝对值最小。输出这个最小差值。


🌙 输入描述

第一行:N K T(三个整数)
第二行:N 个整数

1 ≤ K ≤ N ≤ 1000


🌙 输出描述

输出最小差值的绝对值。


🌙 示例

输入: 5 2 7 1 2 3 4 5 输出: 0 说明:子数组[3,4]的和为7,与T=7的差为0

☀️二:解题思路

前缀和:pre[i] = arr[0]+...+arr[i-1],区间[i, i+K)的和 =pre[i+K] - pre[i]。遍历所有 i,计算差值,取最小。


☀️三:代码实现

C++

#include<iostream>#include<vector>#include<cmath>usingnamespacestd;intmain(){intN,K,T;cin>>N>>K>>T;vector<int>arr(N),pre(N+1,0);for(inti=0;i<N;i++){cin>>arr[i];pre[i+1]=pre[i]+arr[i];}intans=INT_MAX;for(inti=0;i<=N-K;i++){intsum=pre[i+K]-pre[i];ans=min(ans,abs(sum-T));}cout<<ans<<endl;}

Java

importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intN=sc.nextInt(),K=sc.nextInt(),T=sc.nextInt();int[]pre=newint[N+1];for(inti=0;i<N;i++)pre[i+1]=pre[i]+sc.nextInt();intans=Integer.MAX_VALUE;for(inti=0;i<=N-K;i++){intdiff=Math.abs(pre[i+K]-pre[i]-T);if(diff<ans)ans=diff;}System.out.println(ans);}}

Python3

N,K,T=map(int,input().split())arr=list(map(int,input().split()))pre=[0]forxinarr:pre.append(pre[-1]+x)ans=float('inf')foriinrange(N-K+1):diff=abs(pre[i+K]-pre[i]-T)ifdiff<ans:ans=diffprint(ans)

C语言

#include<stdio.h>#include<stdlib.h>intmain(){intN,K,T,pre[1024]={0};scanf("%d %d %d",&N,&K,&T);for(inti=0;i<N;i++){intx;scanf("%d",&x);pre[i+1]=pre[i]+x;}intans=0x7fffffff;for(inti=0;i<=N-K;i++){intdiff=abs(pre[i+K]-pre[i]-T);if(diff<ans)ans=diff;}printf("%d\n",ans);}

JavaScript

const[nkt,arr]=require('fs').readFileSync(0,'utf-8').trim().split('\n');const[N,K,T]=nkt.split(' ').map(Number);constnums=arr.split(' ').map(Number);constpre=[0];for(constxofnums)pre.push(pre[pre.length-1]+x);letans=Infinity;for(leti=0;i<=N-K;i++)ans=Math.min(ans,Math.abs(pre[i+K]-pre[i]-T));console.log(ans);

Go

packagemainimport("fmt";"math")funcmain(){varN,K,Tintfmt.Scan(&N,&K,&T)pre:=make([]int,N+1)fori:=0;i<N;i++{varxint;fmt.Scan(&x)pre[i+1]=pre[i]+x}ans:=math.MaxInt32fori:=0;i<=N-K;i++{diff:=pre[i+K]-pre[i]-Tifdiff<0{diff=-diff}ifdiff<ans{ans=diff}}fmt.Println(ans)}

☀️四:复杂度分析

指标数值
时间复杂度O(N)
空间复杂度O(N)

⭐ 五:易错点

坑1:前缀和数组长度是N+1

pre[0] = 0表示前 0 个元素的和。

坑2:差值是绝对值

abs(sum - T),不是sum - T


🌻共勉:

前缀和 + 滑动窗口是OD机试数组题最常用的组合技,熟练掌握能搞定一大半区间类问题。


📫关于本专栏:一次订阅,永久解锁全部100+篇真题详解
🔥6语言全覆盖:Java | Python3 | C++ | C语言 | JsNode | Go

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 23:50:11

太原岗亭厂家排名

在太原的城市建设与各类工程项目中&#xff0c;岗亭作为集安防、管理与便民服务于一体的重要设施&#xff0c;其质量与适用性直接影响着使用体验与项目形象。面对市场上众多的“太原岗亭”厂家与供应商&#xff0c;如何评判其综合实力、选择排名靠前的合作伙伴&#xff0c;成为…

作者头像 李华
网站建设 2026/6/27 23:44:12

NetToolsPro V1.5.0 重磅发布,增加网络抓包、SFTP、全局快捷键等新功能

NetToolsPro V1.5.0 已经正式上线&#xff0c;这一版本我们在「效率工具」和「视觉体验」两个方向上做了大量投入。除了继续打磨 SSH/SFTP 远程管理场景外&#xff0c;还新增了全局快捷键、网络抓包、主题切换等重磅能力&#xff0c;同时把局域网扫描从固定单网段升级到了支持多…

作者头像 李华
网站建设 2026/6/29 10:34:51

WPS2025 详细图文安装教程(附安装包)WPS 办公软件安装教程

文章目录WPS2025安装包下载WPS2025图文安装流程WPS2025怎么设置默认保存格式&#xff1f;手把手教你快速配置网上WPS2025的安装教程不少&#xff0c;但有的截图太糊&#xff0c;有的装到中间就断了。如果你正在找WPS2025下载和安装的完整教程&#xff0c;这一篇把每个环节都理清…

作者头像 李华
网站建设 2026/6/27 23:38:10

马鞍山正规的撕碎机销售厂家口碑

在固废处理行业摸爬滚打多年&#xff0c;我接触过太多因为撕碎机刀片磨损快、频繁停机而焦虑的客户。有的老板跟我说&#xff0c;一个月因为刀片问题停工7次&#xff0c;换刀片的费用比电费还高&#xff1b;有的工厂明明接了大单&#xff0c;却因为破碎效率跟不上&#xff0c;硬…

作者头像 李华
网站建设 2026/6/27 23:31:50

【2026最新】Abaqus 2026有限元分析软件下载保姆级安装图文教程(全网最详细)【附安装包+永久】

文章目录前言Abaqus 2026 安装前的准备Abaqus 2026 下载Abaqus 2026 安装教程Abaqus 2026入门必看&#xff1a;有限元分析基本流程详解前言 Abaqus 2026 是目前主流的有限元分析工具之一&#xff0c;在工程仿真领域应用相当广泛。这篇教程把从下载到安装完成的每个环节都梳理了…

作者头像 李华