如何在华为OD机试中获得满分?Java实现【滑动窗口】一文详解!

news2025/1/11 18:31:56

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
  • 2. 输入描述
  • 3. 输出描述
  • 4. Java算法源码
  • 5. 测试
  • 6.解题思路

1. 题目描述

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

2. 输入描述

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

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

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

3. 输出描述

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

4. 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]);
    }
}

时间复杂度分析:

由于需要对窗口进行遍历,并计算窗口和,时间复杂度为O(NM)。
排序数组arr的时间复杂度为O((N-M+1)log(N-M+1))。
因此,整体时间复杂度为O(N
M + (N-M+1)log(N-M+1))。

5. 测试

在这里插入图片描述

6.解题思路

题目要求在给定的整数数组中,通过滑动窗口,求得所有窗口和的最大值。窗口从数组的第一个数开始滑动,每次滑动产生一个窗口,并计算窗口内所有数的和。需要找到所有窗口和中的最大值。

算法流程:

  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的最后一个元素,即为窗口滑动产生的所有窗口和的最大值。
    在这里插入图片描述

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

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

相关文章

软件测试理论----接口测试中restful接口状态码规范

一、restful接口状态码总体分类 类别描述1xx&#xff1a;信息通信传输协议信息2xx&#xff1a;成功表示客户端的请求已成功接受3xx&#xff1a;重定向表示客户端必须执行一些其他操作才能完成其请求4xx&#xff1a;客户端错误此类错误状态码指向客户端5xx&#xff1a;服务器错…

在SPSS Statistics中使用R(插件)

date: 2018-10-30 09:26:33 在SPSS中使用R&#xff08;插件&#xff09; 谷歌或者百度“SPSS中调用R”, 最详细也是最靠谱的就是IBM SPSS社区的这两篇文章: https://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/https://www.ibm.com/developerworks/cn/ana…

基于Open3D的点云处理6-点云去噪

当我们从扫描设备获取点云数据时&#xff0c;数据会包含噪声和伪影&#xff0c;点云噪声特性包括不真实的点、孤立点、不规则&#xff0c;基于噪声特性对器进行去除&#xff1b; 统计滤波 Statistical Outlier Removal&#xff08;SOR&#xff09;&#xff08;去除离群点&…

【JVM】13. 垃圾回收器

文章目录 13.1. GC分类与性能指标13.1.1. 垃圾回收器概述13.1.2. 垃圾收集器分类13.1.3. 评估GC的性能指标吞吐量暂停时间吞吐量 vs 暂停时间 13.2. 不同的垃圾回收器概述13.2.1. 垃圾回收器发展史13.2.2. 7种经典的垃圾收集器13.2.3. 7款经典收集器与垃圾分代之间的关系13.2.4…

前端自动化测试 —— Jest 测试框架应用

目录​​​​​​​ 什么是自动化测试 为什么要用前端自动化测试 前端自动化分类和思想 单元测试 集成测试 TDD 测试驱动开发&#xff08;Test Driven Development&#xff09; BDD 行为驱动开发&#xff08;Behavior Driven Development&#xff09; 如何自己写非框架…

分布式软件架构——SOA架构/微服务架构/无服务架构

SOA架构 Service-Oriented Architecture&#xff0c;面向服务的架构。面向服务的架构是一次具体地、系统性地成功解决分布式服务主要问题的架构模式。了解SOA架构前&#xff0c;先了解三种比较有代表性的服务拆分的架构模式&#xff0c;这些架构模式是SOA演化过程的中间产物&a…

偷偷曝光下国内这些软件外包公司!(2023 最新版)

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 我新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 根据网上的资料&#xff0c;整理出来的一份国内软件外包公司的名单。 找工作的同学都要看看&#xff0c;根据自身的情况&#…

杰理AC632N实现custom hid

1. 设备描述符修改 设备描述符主要修改的是PID、VID、设备发现版本号以及字符串描述。 static const u8 sDeviceDescriptor[] { //<Device DescriptorUSB_DT_DEVICE_SIZE, // bLength: Size of descriptorUSB_DT_DEVICE, // bDescriptorType: Device #if defi…

langchain简版教程附案例

简介 LangChain是一个开源的应用开发框架。基于该开源框架&#xff0c;我们可以把大模型与各种工具结合从而实现各种功能&#xff0c;比如基本文档的问答&#xff0c;解析网页内容、查询表格数据等。目前支持Python和TypeScript两种编程语言。当前Python框架支持的模型和功能最…

腾讯云服务器ping不通解决方法(公网IP/安全组/系统多维度)

腾讯云服务器ping不通什么原因&#xff1f;ping不通公网IP地址还是域名&#xff1f;新手站长从云服务器公网IP、安全组、Linux系统和Windows操作系统多方面来详细说明腾讯云服务器ping不通的解决方法&#xff1a; 目录 腾讯云服务器ping不通原因分析及解决方法 安全组ICMP协…

智能计价器-第14届蓝桥杯省赛Scratch中级组真题第5题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第140讲。 智能计价器&#xff0c;本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第5题&#…

楼宇租赁管理系统-什么是楼宇租赁系统

楼宇租赁管理系统是一种综合管理平台&#xff0c;它为不同规模楼宇的租赁管理提供了全面的解决方案。楼宇租赁管理系统的主要功能包括租赁管理、财务管理、维修管理、报告管理以及客户服务管理等。让我们逐一介绍每一个功能点。 一、租赁管理 楼宇租赁管理系统通过集成租户信息…

路径规划算法:基于群居蜘蛛优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于群居蜘蛛优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于群居蜘蛛优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

博学谷学习记录】超强总结,用心分享 | 架构师 MySQL调优MVCC学习总结

文章目录 1 概述2 快照读与当前读当前读快照读隔离级别&#xff1a;undo log版本链&#xff1a; 3 Read View3.1 什么是Read View?3.2 实现原理3.3 Read View规则&#xff08;可见性算法&#xff09; 4 MVCC整体流程4.1 可重复读是如何工作的&#xff1f;4.2 读提交是如何工作…

ChatGPT国内镜像,以及如何使用ChatGPT帮你制作PPT

一&#xff1a;前言 ChatGPT&#xff1a;智能AI助你畅聊天地 在现代人日益忙碌的生活中&#xff0c;难免需要一些轻松愉快的聊天来放松身心。而现在&#xff0c;有了 ChatGPT&#xff0c;轻松愉快的聊天变得更加智能、有趣且不受时间、地点限制&#xff01; 什么是 ChatGPT&…

Python中模块的使用方法4

1 模块、包和库的区别 Python中&#xff0c;模块的英文是“module”&#xff0c;是一个以py为后缀名的文件&#xff1b;包的英文是“package”&#xff0c;是一个包含了多个模块的目录&#xff1b;库的英文是“library”&#xff0c;包含了具有相关功能的包和模块。 2 模块的…

ChatGPT 在自动化测试领域的应用,我们真的要被代替了吗?

目录 前言 一、ChatGPT 简介 二、ChatGPT 的应用场景 三、ChatGPT 的优势 四、ChatGPT 的局限性 五、ChatGPT 在自动化测试领域的拓展应用 六、ChatGPT真的可以代替软件测试人员吗 七、结语 前言 人工智能技术在近年来得到了快速发展&#xff0c;不少领域都开始尝试融合…

入理解深度学习——正则化(Regularization):多任务学习

分类目录&#xff1a;《深入理解深度学习》总目录 多任务学习是通过合并几个任务中的样例&#xff08;可以视为对参数施加的软约束&#xff09;来提高泛化的一种方式。正如额外的训练样本能够将模型参数推向具有更好泛化能力的值一样&#xff0c;当模型的一部分被多个额外的任务…

redis主从复制策略的原理:主从节点间如何同步数据?

redis的主从复制原理经历了多个版本的更新。 redis2.8之前的SYNC方案 命令&#xff1a; SYNChttps://www.yuque.com/snailclimb/mf2z3k/ks9olb19hc9wse5k#5935f46a 存在的问题&#xff1a; slave加载RDB的过程中不能对外提供读服务slave和master断开连接后&#xff0c;sla…

HCIA-VLAN间通信之路由器

目录 路由信息获取方式&#xff1a; 最佳路由条目选择&#xff08;根据路由的优先级和开销选择&#xff09;&#xff1a; VLAN间通信 方案1&#xff0c;使用路由器的物理接口来实现不同vlan间的通信 方案2&#xff1a;使用路由器的子接口来实现 路由&#xff1a;指导报文转…