通过率 78% · 提交 552 · 通过 432
小慕的橱窗里陈列着一排宝石,每颗宝石都有不同的价格,价格记录为 `gems[i]`,其中 `0 ≤ i < n`,`n = gems.length`。小慕可以同时出售 0 颗或多颗宝石,但若同时出售多颗,则这些宝石的编号必须连续。 例如,客户最多能购买 `m` 颗宝石,且购买的宝石编号必须是 `gems[i], gems[i+1], ..., gems[i+m-1]`(`0 ≤ i < n`,`m ≤ n`)。假设小慕手头有总面值为 `value` 的钱,请问他最多能购买到多少颗宝石。如果无法购买任何宝石,则返回 `0`。
这类题属于华为 OD 机考真题方向中「100分 / 滑动窗口」方向的高频题型,通常考察对「100分 / 滑动窗口」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入n,参数类型为 int,取值范围:[0,10^6],表示橱窗中宝石的总数量。
之后n行分别表示从第0个到第n-1个宝石的价格,即gems[0]到gems[n-1]的价格,类型为int,取值范围:(0,1000]。
之后一行输入v,类型为int,取值范围:[0,10^9]表示你拥有的钱。
输出int类型的返回值,表示最大可购买的宝石数量。
示例 1
输入示例
7 8 4 6 3 1 6 7 10
输出示例
3
gems = [8,4,6,3,1,6,7], value = 10 最多购买的宝石为gems[2]至gems[4]或者gems[3]至gems[5]
示例 2
输入示例
0 1
输出示例
0
gems = [],value = 1 因为没有宝石,所以返回0
示例 3
输入示例
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
9 6 1 3 1 8 9 3 2 4 15
输出示例
4
gems = [6, 1, 3, 1, 8, 9, 3, 2, 4],value = 15 最多购买的宝石为gems[0]至gems[3]
示例 4
输入示例
9 1 1 1 1 1 1 1 1 1 10
输出示例
9
gems = [1, 1, 1, 1, 1, 1, 1, 1, 1], value = 10 最多购买的宝石为gems[0]至gems[8],即全部购买
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有