当前位置: 首页 > news >正文

华为OD机试 - 数组连续和 - 滑动窗口(Java 2024 C卷 100分)

在这里插入图片描述

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

给定一个含有N个正整数的数组,求出有多少连续区间(包括单个正整数),它们的和大于等于 x。

二、输入描述

第一行为两个整数 N,x。(0<N≤100000, 0≤x≤10000000)

第二行有 N 个正整数 (每个正整数小于等于 100)。

三、输出描述

输出一个整数,表示所求的个数

注意:此题对效率有要求,暴力解法通过率不高,请考虑高效的实现方式。

1、输入

3 7
3 4 7

2、输出

4

3、说明

第一行的 3表示第二行数组输入3个数,第一行的7是比较数,用于判断连续数组是否大于该数;
组合为 3+4,3+4+7,4+7,7;都大于等于指定的7;所以共四组。

四、解题思路

通过滑动窗口的方式解题。

核心思路:

  1. 遍历数组,向右扩展窗口
  2. left右移,缩小窗口
    • left右移后,减去left处的值,就是left到right的区间和
    • 再通过区间和去和x比较,如果还是大于x,则left继续右移
    • 满足条件的连续区间个数+1

五、Java算法源码

public class Test05 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入int N = scanner.nextInt(); // 数组长度int x = scanner.nextInt(); // 目标和int[] nums = new int[N]; // 存储数组元素for (int i = 0; i < N; i++) {nums[i] = scanner.nextInt(); // 读取数组元素}int left = 0; // 左指针int right = 0; // 右指针int sum = 0; // 当前窗口内元素的和int count = 0; // 满足条件的连续区间个数// 遍历数组while (right < N) {// 向右扩展窗口sum += nums[right];int tempSum = sum;// left右移,缩小窗口while (tempSum >= x && left <= right) {// left右移后,减去left处的值,就是left到right的区间和// 再通过区间和去和x比较,如果还是大于x,则left继续右移tempSum -= nums[left];left++;// 满足条件的连续区间个数+1count++;}left = 0;right++;}// 输出结果System.out.println(count);}
}

六、效果展示

1、输入

4 7
2 3 4 7

2、输出

6

3、说明

符合要求的连续区间:

234、2347、34、347、47、7

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

http://www.lryc.cn/news/336104.html

相关文章:

  • 微店micro获得微店micro商品详情,API接口封装系列
  • C语言中的数据结构--链表的应用1(2)
  • .Net6 使用Autofac进行依赖注入
  • 第十二届蓝桥杯省赛真题(C/C++大学B组)
  • DC40V降压恒压芯片H4120 40V转5V 3A 40V降压12V 车充降压恒压控制器
  • 2、Qt UI控件 -- qucsdk项目使用
  • MATLAB算法实战应用案例精讲-【人工智能】AIGC概念三部曲(三)
  • 外汇110:外汇交易不同货币类别及交易注意事项!
  • gerrit 拉取失败
  • 大数据行业英语单词巩固20240410
  • 天软特色因子看板 (2024.4 第3期)
  • 使用QT 开发不规则窗体
  • 如何构建企业经营所需的商业智能(BI)能力
  • 【vue】watch监听取不到this指向的数?
  • Ubuntu-22.04安装VMware虚拟机并安装Windows10
  • ELK企业日志分析系统介绍
  • 在C#中读取写入字节流与读取写入二进制数据, 有何差异?
  • 数据库相关知识总结
  • 【汇编语言实战】输出数组中特定元素
  • WordPress LayerSlider插件SQL注入漏洞复现(CVE-2024-2879)
  • MOS管的判别符号记忆与导通条件
  • 数据指标与经营智慧:构建有洞见的经营分析报告
  • Spring 中类似 aBbb 单字母单词序列化与反序列问题
  • TiDB 慢查询日志分析
  • 网页文件批量下载工具有哪些 网页文件批量下载工具推荐 IDM免费激活 网络下载加速器
  • 嵌入式算法开发系列之图像处理算法
  • HarmonyOS4-ArkUI组件动画
  • 模块化——如何导入模块?(内置模块与自定义模块)
  • element-ui的按需引入报错解决:MoudleBuildFailed,完整引入和按需引入
  • 面向低碳经济运行目标的多微网能量互联优化调度matlab程序