【华为OD机试真题 C语言】1、滑动窗口最大值 | 机试真题+思路参考+代码解析

news/2024/10/31 5:34:58/

文章目录

    • 一、题目
      • 🎃题目描述
      • 🎃输入输出
      • 🎃样例1
    • 二、思路参考
    • 三、代码参考
      • 🏆C语言代码
  • 作者:KJ.JK


🍂个人博客首页: KJ.JK
 
🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用C语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习


一、题目


🎃题目描述

有一个N个整数的数组,和一个长度为M的窗口,窗口从数组内的第一个数开始滑动直到窗口不能滑动为止,
 
每次窗口滑动产生一个窗口和(窗口内所有数的和),求窗口滑动产生的所有窗口和的最大值


🎃输入输出

输入
第一行输入一个正整数N,表示整数个数。(0<N<100000)
第二行输入N个整数,整数的取值范围为[-100,100]。
第三行输入一个正整数M,M代表窗口的大小,M<=100000,且M<=N。
 
输出
窗口滑动产生所有窗口和的最大值


🎃样例1

输入
6
12 10 20 30 15 23
3输出
68说明窗口长度为3,窗口滑动产生的窗口和分别为10+20+30=6020+30+15=6530+15+23=6815+23+12=50,所以窗口滑动产生的所有窗口和的最大值为68

二、思路参考

  1. 首先,读取输入的整数个数N和整数数组,以及窗口大小M
  2. 定义一个变量maxSum,用于记录窗口滑动产生的所有窗口和的最大值,初始值为负无穷大
  3. 计算初始窗口的和sum,即前M个数的和
  4. 遍历数组从第M个数开始,每次滑动窗口:
    将窗口的第一个数移出窗口,即从sum中减去窗口的第一个数,
    将窗口的下一个数添加到窗口中,即将窗口的下一个数加到sum中,更新maxSum,
    如果sum大于maxSum,则更新maxSum为sum

5.输出maxSum作为结果


三、代码参考


🏆C语言代码

#include <stdio.h>int main() {int N;scanf("%d", &N);int arr[N];for (int i = 0; i < N; i++) {scanf("%d", &arr[i]);}int M;scanf("%d", &M);int maxSum = -100000; // 初始化为负无穷大int sum = 0;// 计算初始窗口的和for (int i = 0; i < M; i++) {sum += arr[i];}// 窗口滑动,计算所有窗口和的最大值for (int i = M; i <= N; i++) {if (sum > maxSum) {maxSum = sum;}// 窗口滑动:移出窗口的第一个数,加入窗口的下一个数sum -= arr[i - M];sum += arr[i];}printf("%d\n", maxSum);return 0;
}

作者:KJ.JK


http://www.ppmy.cn/news/292767.html

相关文章

电脑显卡html接口无信号,笔记本电脑HDMI连接电视机显示无信号的解决方法

记本HDMI连接电视机显示无信号,怎么处理?现在的液晶电视,HDMI(高清晰度多媒体接口)是标配,通常是用PC或是平板电脑输出影像,通过电视屏幕来显示,当遇到笔记本HDMI连接电视机显示无信号该怎么解决呢?下面,我们就一起来看看笔记本电脑HDMI连接电视机显示无信号的解决方法…

使用ATI9550显卡实现显示器和电视同步显示

使用ATI9550显卡实现显示器和电视同步显示 近日装一视频会议&#xff0c;要把视频信号在电视上显示&#xff0c;以便更多的人可以参加视频会议&#xff01;所以采用了带S端子输出的显卡&#xff01; 我用的是ATI9550的&#xff0c;好像和nVIDIA同一个蕊片的&#xff0c;装上后由…

【数据分析之道-Matplotlib(八)】Matplotlib箱线图

文章目录 专栏导读1、Matplotlib箱线图boxplot()基本语法2、Matplotlib箱线图boxplot()举例异常值3、Matplotlib箱线图boxplot()样式定义4、Matplotlib箱线图boxplot()举例带缺口5、Matplotlib箱线图boxplot()举例横向显示6、Matplotlib箱线图boxplot()举例显示平均值7、Matplo…

传统ERP软件如何SaaS化?

01 ERP和SaaS ERP概念 企业资源计划 (ERP) 系统是许多企业的主干&#xff0c;助力管理整个企业内的会计、采购流程、项目等。对于许多 IT 部门而言&#xff0c;ERP 系统通常意味着大型、昂贵且耗时的部署&#xff0c;并可能需要进行大量硬件或基础设施投资。然而&#xff0c;云…

若依集成分库分表(一)

1.本次需求为同库分表 1.1 引入pom依赖 <!-- sharding-jdbc分库分表 --> <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-core</artifactId><version>4.1.1</version> </dependenc…

Python入门教程+项目实战-13.3节-集合的快速查找

目录 13.3.1 键的输出顺序 13.4.2 键的数据类型 13.4.3 集合的快速查找 13.4.4 知识要点 13.4.5 系统学习python 13.3.1 键的输出顺序 集合类型的底层实现基于哈希表&#xff0c;键的输出顺序取决于键在哈希表中的存储顺序。 对哈希表结构不是很熟悉的同学&#xff0c;可…

为啥无线随身设备显示无服务器,随身WiFi怎么用_移动wifi怎么用【图文】-太平洋IT百科...

随身wifi怎么用 随身wifi就是可以随身携带的wifi信号&#xff0c;通过无线移动路由器和无线运营商提供的无线上网芯片(sim卡)&#xff0c;组成一个可以移动的wifi接收发射信号源。随身wifi怎么用&#xff1f;通过此套设备&#xff0c;可以连接到2.5G、3G或者4G网络上&#xff0…