通过率 100% · 提交 7 · 通过 7
有一个连续的数列,它的前 7 个数为 1, 2, 3, 4, 5, 6, 7。从第 8 个数开始,每个数的值等于它所在位置前面最近连续 7 个数中,最大的两个数之和减去最小的两个数之和。
例如:第 8 个数的值,是它前面的 7 个数(1, 2, 3, 4, 5, 6, 7)中,最大的两个数(6、7)之和减去最小的两个数(1、2)之和,即 6 + 7 - 1 - 2 = 10。
现在给定一个位置 n,请返回该位置上的数值。
请实现以下接口:
int getResult(int n)
n:数列中的位置,1 <= n <= 1000
返回:数列第 n 个位置上的数值
这类题属于算法机考高频题型中「100分 / 华为OD」方向的高频题型,通常考察对「100分 / 华为OD」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
输入一个整数 n,表示数列的位置。
输出一个整数,表示该位置上数字的值。
示例 1
输入示例
3
输出示例
3
该数列前 7 个数为 1, 2, 3, 4, 5, 6, 7,所以第 3 个数字为 3。
示例 2
输入示例
8
输出示例
10
第 8 个数的值是他前面的 7 个数(1, 2, 3, 4, 5, 6, 7)中,最大的两个数字(6、7)的和减去最小的两个数(1、2),计算得到结果为 6 + 7 - 1 - 2 = 10。
示例 3
输入示例
时间限制 1000 ms · 内存限制 256 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
10
输出示例
15
递推得到数列:
第 1 个数:1
第 2 个数:2
第 3 个数:3
第 4 个数:4
第 5 个数:5
第 6 个数:6
第 7 个数:7
第 8 个数:6 + 7 - 1 - 2 = 10
第 9 个数:第 2 ~ 8 个数为 2, 3, 4, 5, 6, 7, 10,最大两个 7 + 10 = 17,最小两个 2 + 3 = 5,故为 17 - 5 = 12
第 10 个数:第 3 ~ 9 个数为 3, 4, 5, 6, 7, 10, 12,最大两个 10 + 12 = 22,最小两个 3 + 4 = 7,故为 22 - 7 = 15
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有