华为OD机试真题 Java 实现【相同数字的积木游戏1】【2023Q2 100分】-LMLPHP

一、题目描述

小华和小薇一起通过玩积木游戏学习数学。

他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。

小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离。

小薇请你帮忙替解决这个问题。

二、输入描述

第一行输入为N,表示小华排成一排的积木总数。

接下来N行每行一个数字,表示小华排成一排的积木上数宇。

三、输出描述

相同数宇的积木的位置最远距离;

如果所有积木数字都不相同,请返回-1。

四、补充说明

0<=积木上的数字<10

1<=积木长度<=10

四、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String line = sc.nextLine();
    int n = Integer.parseInt(line);
    
    // 缓存
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    int max = -1;

    for (int i = 0; i < n; i++) {
        // 下一个数
        int num = Integer.parseInt(sc.nextLine());
        if (map.containsKey(num)) {
            // 计算两个相同的数之间的距离
            int distance = i - map.get(num);
            // 与之前的相同的数之间的距离作比较,取最大距离
            max = Math.max(distance, max);
        }else {
            // 如果集合中不存在,则放入集合,值为当前位置
            map.put(num, i);
        }
    }
    System.out.println(max);
}

五、效果展示

1、输入

5
1
2
3
2
1

2、输出

4

3、说明

很明显,距离最远的相同的数是1。

华为OD机试真题 Java 实现【相同数字的积木游戏1】【2023Q2 100分】-LMLPHP


🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

华为OD机试真题 Java 实现【相同数字的积木游戏1】【2023Q2 100分】-LMLPHP

05-14 01:25