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 个数的和,之后窗口每次向右移动一格,加入右侧新数、减去左侧旧数,并更新最大值。
算法步骤
- 读取整数数组
nums和窗口长度k。 - 计算前
k个元素之和,作为初始窗口和与答案。 - 从下标
k开始向右遍历:- 当前窗口加入
nums[i]。 - 当前窗口移除
nums[i-k]。 - 用新的窗口和更新最大值。
- 当前窗口加入
- 输出最大窗口和。
复杂度分析
设数组长度为 n。
- 时间复杂度:
O(n),每个元素最多被加入和移出窗口一次。 - 空间复杂度:
O(1),除输入数组外只使用常数额
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/864
文章版权归作者所有,未经允许请勿转载。
THE END