8.23华为OD机试真题 新系统 – 小牛牛超市选品 (JavaPyCC++JsGo)

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

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

题目描述

牛牛在超市采购商品,每件商品有对应价格(均为正整数)。给定预算 limit,要求选出连续一段商品,满足两条约束:

  1. 这段商品总价格严格大于 limit
  2. 这段商品中最贵商品价格 <= limit

请找出满足以上两条规则的最短连续商品长度;不存在合法区间输出

约束条件:

  • 0 < limit < 100
  • 0 < n <= 10
  • 0 < 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 > limitmax_price <= limit 时,这个区间合法,更新最短长度。

算法步骤

  1. 枚举区间左端点 i
  2. i 开始向右扩展右端点 j
  3. 累加区间总和 total,同时更新最大值 max_price
  4. 如果 max_price > limit,则当前起点下更长的区间也不可能合法,可以停止扩展。
  5. total > limitmax_price <= limit,更新答案。
  6. 遍历结束后,若没有合法区间输出 ,否则输出最短长度。

复杂度分析

设商品数量为 n

  • 时间复杂度:O(n^2)
  • 空间复杂度:`O
THE END