华为OD机试真题B卷 Java 实现【滑动窗口】,附详细解题思路

news/2024/11/13 4:17:20/

在这里插入图片描述

一、题目描述

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

二、输入描述

第一行输入一个正整数N,表示整数个数。(0<N<100000)

第二行输入N个整数,整数的取值范围为[-100,100]。

第三行输入一个正整数M,M代表窗口大小,M<=100000,且M<=N。

三、输出描述

窗口滑动产生的所有窗口和的最大值。

四、解题思路

  1. 读取输入的整数个数N;
  2. 读取输入的N个整数,将其存储在数组array中;
  3. 读取输入的窗口大小M;
  4. 创建一个大小为N-M+1的数组arr,用于存储窗口滑动产生的所有窗口和;
  5. 遍历数组array,计算每个窗口的和,并存储在arr中:
    • 对于每个位置i,初始化窗口和sum=0;
    • 遍历从i到i+M-1的范围,将array中对应位置的元素累加到sum中;
    • 将sum存储在arr的第i个位置;
  6. 对数组arr进行排序;
  7. 输出arr的最后一个元素,即为窗口滑动产生的所有窗口和的最大值;

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextInt()) {int a = sc.nextInt();int[] array = new int[a];for (int i = 0; i < a; i++) {array[i] = sc.nextInt();}int b = sc.nextInt();int[] arr = new int[a - b + 1];for (int i = 0; i < a - b + 1; i++) {arr[i] = 0;for (int j = 0; j < b; j++) {arr[i] += array[i + j];}}// 排序,取出最后一个最大的值Arrays.sort(arr);System.out.println(arr[a - b]);}
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


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

相关文章

xshell是什么软件,xshells7使用教程安装及连接linux的使用方法

Xshell是一款功能强大的终端模拟器&#xff0c;用户可以通过Xshell来查看编辑各种服务器上的文件和执行各类脚本&#xff0c;其基于SSH协议进行登录&#xff0c;安全性非常高&#xff0c;被广泛应用于企业的日常开发运维工作中。它支持SSH1, SSH2, 以及Microsoft Windows 平台的…

C/C++基础讲解(一百零四)之经典篇(完数/自由落体/猴子吃桃)

C/C++基础讲解(一百零四)之经典篇(完数/自由落体/猴子吃桃) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一样都是这么啃过来的,从不知到知知,懵懂到入门,每一步都…

计算机桌面怎么分区域,怎样设置电脑桌面的区域分割?

是不是同画面双显示器同步显示或者说同时显示TV和电脑双画面 屏幕扩展&#xff0d;&#xff0d;&#xff0d;电视看电影&#xff0c;电脑同时上网、玩游戏实现功能&#xff1a;电视做为电脑第二显示器&#xff0c;把Windows桌面扩展到电视上&#xff0c;实现在在电视上观看高清…

深信服云桌面linux客户端,深信服桌面云

VDI是一款基于互联网的云上虚拟windows桌面服务&#xff0c;即可在线体验大屏超清画质视频&#xff0c;在线一键配置升级&#xff0c;无需其它硬件&#xff0c;一个账号可满足家庭成员各类需求&#xff0c;深信服桌面云具有多平台、稳定性好、维护安装过程简化等特点&#xff0…

VNC远程链接桌面

VNC远程桌面连接 &#xff08;VNC\SPice&#xff09; 7.1 查看是否安装vnc安装包 rpm -qa tigervnc tigervnc-server如果有直接启动服务并加到开机自启 没有就安装 yum install tigervnc tigervnc-server7.2拷贝服务到系统服务下面并重命名 cp /usr/lib/systemd/system/vncs…

计算机桌面整洁,想让你的桌面变得整洁干净,这几款桌面整理软件别错过

想必没有人想让自己的桌面变得一团乱&#xff0c;这里给大家介绍几款以免就能让自己的桌面变得整洁干净的软件。 腾讯电脑管家——桌面整理 文件分类&#xff1a;桌面文件分类整理&#xff0c;从此告别凌乱桌面。 磁盘映射&#xff1a;桌面直达磁盘文件&#xff0c;释放你的C盘…

计算机里怎么添加桌面,电脑上怎么把我的电脑添加到桌面上

以Windows 10系统为例,把"我的电脑"放到桌面快捷方式的方法如下:1、在桌面空白出,鼠标点击右键,在弹出来菜单栏选择“个性化”;2、进入个性化设置之后,点击个性化下面的“主题”;3、在右边主题设置页面,拉到下面,看到相关的设置这里,点击“桌面图标设置”;…

html仿云桌面,仿电脑桌面的云端桌面HTML源码 v1.0

仿电脑桌面的云端桌面HTML源码 v1.0介绍&#xff1a; 这是一套纯静态的html源码&#xff0c;使用html和js脚本实现的一个仿电脑桌面的web端工具平台&#xff0c;是我们搜索引擎大全一直使用的远端桌面&#xff0c; 最近有一些朋友非常喜欢我们搜索引擎大全的云端桌面&#xff0…