2026华为OD机考真题附答案-计算数列位置N的值

题目描述:

1、 输入M、N两个数,则按照以下规则形成一个数列;

2、 数列的前M个元素的值为1到M;

3、从M+1个元素开始,计算的逻辑为:

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元

素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;

请计算该数列第N个位置上的数值

补充说明

M取值范围:3<=M<=10

N取值范围:1<= N<=50

输入描述

两个整数,用逗号分割,分别表示M和N

输出描述

一个整数,表示数列第N个位置上的数值

示例1

输入

5,1

输出

1

package org.example;

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

public class 计算数列位置N的值 {

public static void main() {

System.out.println(getResult(5,6));

}

复制代码
public static int getResult(int M, int N) {
    // 初始化数列,前M个元素
    List<Integer> sequence = new ArrayList<>();
    for (int i = 1; i <= M; i++) {
        sequence.add(i);
    }

    // 如果N在M中,直接输出结果
    if (N <= M) {
        return sequence.get(N - 1);
    }

    // 循环计算从第M+1个道第N个元素
    for (int i = M; i < N; i++) {
        // 截取前面连续的M个元素
        List<Integer> pre = sequence.subList(i - M, i);
        // 求最大值
        int max = getMax(pre);
        // 求最小值
        int min = getMin(pre);
        // 判断是否有重复元素
        boolean hasDuplicate = hasDuplicate(pre);
        int currentNum;
        if (hasDuplicate) {
            currentNum = max + min;
        } else {
            currentNum = max - min;
        }

        sequence.add(currentNum);
    }
    return sequence.get(N-1);
}

private static boolean hasDuplicate(List<Integer> pre) {
    Set<Integer> set = new HashSet<>(pre);
    return set.size() == pre.size();
}

private static int getMin(List<Integer> pre) {
    int min = Integer.MAX_VALUE;
    for (Integer i : pre) {
        min = Math.min(min, i);
    }
    return min;
}

private static int getMax(List<Integer> pre) {
    int max = 0;
    for (Integer i : pre) {
        max = Math.max(i, max);
    }
    return max;
}

}

相关推荐
极客先躯17 分钟前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
普通网友19 分钟前
共识算法实现:从工作量证明到权益证明的演进
算法·区块链·共识算法
xqqxqxxq1 小时前
Java Socket 多人聊天室(私聊+群聊)技术笔记(V4版本)
java·网络·笔记
wang09071 小时前
自己动手写一个spring之aop_1
java·后端·spring
ldmd2841 小时前
地图生成算法(噪声篇-Perlin,Simplex,Value noise)
算法·go·地图生成
国科安芯2 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
deng12042 小时前
【Thread类的用法(1)-- Thread类的基本用法】
java·java-ee
小陈phd2 小时前
集成检索介绍
算法
小poop2 小时前
轮转数组:从暴力到最优,一题掌握算法复杂度分析
数据结构·算法·leetcode
樱桃读报僵尸2 小时前
说说 LLMRouter,Agent 执行过程中怎么动态的选择 LLM
算法