8.30华为OD机试真题 新系统 – 小花获胜的奶茶 (JavaPyCC++JsGo)

2026 华为OD机试真题8月30日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

小菊和小花是好朋友,他们经常一起玩游戏。这天他们玩一个数字游戏,获胜可以获得对方1杯奶茶。

游戏规则:

小菊在纸上写了一排数组,小花需要从中选择连续k个数字,使得这k个数字的和最大。

小花正确找到最大的值就是获胜,小菊则提供1杯奶茶;小花想获胜喝奶茶,请你帮助她。

2026 华为OD机试真题8月30日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

参数1:给出的一排数字

参数2:k

约束:

  • -2147483648 <= 单个数字 <= 21474836472
  • 0 < 一排数字长度 <1063
  • 需小花选择连续的数字个数k,1 <=k <= 小菊给出的一排数字的长度

输出描述

返回连续k个数字的最大和

示例1

输入

1,3,8,6,4,10
3

输出

20

说明

[1,3,8,6,4,10], 小菊给出的一排数字,数字为整数,

3为连续的数字个数k,

连续的三个数 6,4,10 三个数和最大, 6 +4 + 10 = 20

解题思路

核心思想

题目要求的是长度固定为 k 的连续子数组最大和。固定长度窗口很适合用滑动窗口处理:先统计前 k 个数的和,之后窗口每次向右移动一格,加入右侧新数、减去左侧旧数,并更新最大值。

算法步骤

  1. 读取整数数组 nums 和窗口长度 k。
  2. 计算前 k 个元素之和,作为初始窗口和与答案。
  3. 从下标 k 开始向右遍历:
    • 当前窗口加入 nums[i]。
    • 当前窗口移除 nums[i-k]。
    • 用新的窗口和更新最大值。
  4. 输出最大窗口和。

复杂度分析

设数组长度为 n。

  • 时间复杂度:O(n),每个元素最多被加入和移出窗口一次。
  • 空间复杂度:O(1),除输入数组外只使用常数额
THE END