计算数列位置N的值
2026 华为OD机试真题 4月15日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
- 输入
M,N两个数,则按照以下规则形成一个数列。 - 数列的前
M个元素的值为1到M - 从M+1个元素开始,计算逻辑为
- 如果其前
M个元素中,存在值相同的元素,则该位置上的数值等于前M个数中最大数值与最小数值之和。 - 如果其前
M个元素中,不存在值相同的元素,则该位置上的数值等于前M个数中最大的数值和最小数值之差。
- 如果其前
请计算该数列第N个位置上的数值
补充
3 <= M <= 101 <= N <= 50
输入描述
输出N和M,使用, 分割
输出描述
输出N位置上的数值
示例1
输入
5,1
输出
1
说明
示例2
输入
5,5
输出
5
说明
示例3
输入
5,6
输出
4
说明
解题思路
核心思想
本题是一道模拟题,要求根据给定的 和 按照特定规则生成数列并求出第 个元素的值。
数列生成规则:
- 前 个元素:直接赋值为 到 。
- 从第 个元素开始:观察其前 个元素。
- 如果前 个元素中存在重复的值:当前值 = 前 个元素中的
最大值 + 最小值。 - 如果前 个元素中不存在重复的值:当前值 = 前 个元素中的
最大值 - 最小值。
- 如果前 个元素中存在重复的值:当前值 = 前 个元素中的
解题步骤:
- 使用一个列表(数组)存储生成的数列。
- 循环 次,每次根据前 个元素的状态计算新元素。
- 判断重复可以使用集合(Set)或哈希表,如果集合大小小于 ,说明有重复。
- 直接返回数列的第 个元素。
复杂度分析
- 时间复杂度:。我们需要计算到第 个元素,每次计算需要遍历前 个元素来找最大值、最小值并判断重复。给定 ,复杂度非常低。
- 空间复杂度:。需要一个长度为 的数组来存储数列。