编程题:相同数字的积木游戏(Java)

题目描述

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

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

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

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

输入

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

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

输出

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

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

样例输入
复制代码
5
1
2
3
1
4
样例输出
复制代码
3
思路:

这属于一个简单题目了,我们只要边输入边判断改变即可。

首先,每种数字第一次出现的时机是需要记录下来的,因为我们是求间隔最长的两个相同元素的间隔长度。

其次就是遇见重复元素进行判断,更改最大值状态即可。

代码:
java 复制代码
package Date3Point21;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 小华和小薇一起通过玩积木游戏学习数学。
 * 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。
 * 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同目所处位置最远的2块积木块,计算他们的距离。
 * 小薇请你帮忙替她解决这个问题。
 */
public class MainB {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n = scanner.nextInt();
        Map<Integer,Integer>  map=new HashMap<>();
        int count=1;
        int maxLen=0;
        while (count<=n){
            int num= scanner.nextInt();
            if(!map.containsKey(num)){
                map.put(num,count);
            }else{
                Integer integer = map.get(num);
                maxLen=maxLen<count-integer.intValue()?count-integer.intValue():maxLen;
            }
            count++;
        }
        if(maxLen==0){
            System.out.println(-1);
        }else{
            System.out.println(maxLen);
        }
    }
}
相关推荐
驱动小百科14 小时前
国产3A游戏《影之刃零》正式发售:售价及电脑配置要求介绍
游戏·影之刃零·影之刃零配置要求·影之刃零下载·影之刃零售价
信奥卷王16 小时前
[GESP202312 六级] 闯关游戏
游戏
德迅云安全-上官18 小时前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏
科技那些事儿19 小时前
旗舰游戏本 CPU 对决:锐龙 9 9955HX 对比酷睿 Ultra 9 275HX
游戏·智能手机·智能电视
njsgcs20 小时前
老滚5 文本替换中文简体 仓库加经验glm5.3f
游戏
I Am a robert girl1 天前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
大囚长1 天前
AI意图预测与游戏全球同服对战的超光速零延迟探究
人工智能·游戏
qq3621967052 天前
OBB 数据包是什么?大型游戏 APK 装完闪退的元凶(2026)
游戏
xiaolang_8616_wjl2 天前
c++游戏_宝可梦大世界(源代码)
开发语言·c++·游戏
凯基迪科技3 天前
Unity游戏加密锁逆向方案、选型与攻防分析
游戏·unity·游戏引擎