8.23华为OD机试真题 新系统 – 小牛牛超市选品 (JavaPyCC++JsGo)
2026 华为OD机试真题8月23日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
牛牛在超市采购商品,每件商品有对应价格(均为正整数)。给定预算 limit,要求选出连续一段商品,满足两条约束:
- 这段商品总价格严格大于
limit - 这段商品中最贵商品价格
<= limit
请找出满足以上两条规则的最短连续商品长度;不存在合法区间输出 。
约束条件:
0 < limit < 1000 < n <= 100 < Ai <= 10
2026 华为OD机试真题8月23日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
输入描述
参数 1:商品数量 n
参数 2:预算上限 limit
参数 3:商品价格数组,数组元素代表每件商品价格 Ai
输入为三行:
n
limit
prices
其中 prices 使用英文逗号分隔,例如 2,3,1,2,4,3。
输出描述
合法最短区间长度;无合法区间输出 。
示例1
输入
6
7
2,3,1,2,4,3
输出
3
说明
[4,3]的和为 7,不满足严格大于 7,作废[2,4,3]的和为 9>7,最大值 4<=7,长度 3[3,1,2,4]的和为 10>7,长度 4- 最短合法长度为 3
示例2
输入
3
11
1,2,3
输出
说明
不满足 limit 约束
解题思路
核心思想
由于 n <= 10,直接枚举所有连续区间即可。对每个起点 i,从左到右扩展终点 j,实时维护区间总和 total 和最大值 max_price。
当 total > limit 且 max_price <= limit 时,这个区间合法,更新最短长度。
算法步骤
- 枚举区间左端点
i。 - 从
i开始向右扩展右端点j。 - 累加区间总和
total,同时更新最大值max_price。 - 如果
max_price > limit,则当前起点下更长的区间也不可能合法,可以停止扩展。 - 若
total > limit且max_price <= limit,更新答案。 - 遍历结束后,若没有合法区间输出
,否则输出最短长度。
复杂度分析
设商品数量为 n。
- 时间复杂度:
O(n^2) - 空间复杂度:`O
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/857
文章版权归作者所有,未经允许请勿转载。
THE END