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;
}

}

相关推荐
Nuanyt几秒前
JUC常见核心知识梳理01 线程 并发 JMM volatile 管程 锁 synchronized
java·开发语言·网络·jvm
hfywmsj4 分钟前
广州餐饮铺位招租数据建模:基于多维评估体系的选址算法设计与实现
人工智能·算法·广州餐饮铺位招租
我命由我123455 分钟前
Android 控件 - ListAdapter
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
CodeStats10 分钟前
【Java 类加载器】Java 类加载器完整体系深度拆解(中):URLClassLoader 能力剖析与继承委派辨析
java·jvm·classloader·类加载器
Terra.K12 分钟前
JAVA职业探索和学习----中间件开发目标
java·学习·中间件
wabs66612 分钟前
关于二叉树【力扣116.填充每个节点的下一个右侧节点指针的思考】
数据结构·c++·算法·leetcode·二叉树·层序遍历
&不羁之风&21 分钟前
外网 SFTP 到内网 FTP 自动同步方案(lftp 实战)
java·sftp·ftp·lftp
Nil20826 分钟前
leetcode 74搜索二维矩阵
算法·leetcode·矩阵
新知图书33 分钟前
第 14 章 后训练算法GRPO详解与实战
人工智能·算法
shirsl3 小时前
算法 Day1-数组 / 哈希 + 双指针
python·算法·哈希算法