每日一题(小白)模拟娱乐篇27

由题意可以得知这是一道暴力+模拟的题目,我们只需要根据题意说的模拟整个过程即可。首先需用循环接收n个数字,每次判断这个数字是否出现过,若没有出现则为对应的负值,若出现过则需要将这个坐标减去之前坐标的值再减一返回(因为计算的是两个之间的距离,需要在坐标基础上再减一),则需要两个对应的数据结构存储相应的值,为了使用方便我们用临时变量或者数组存放原数组,用ArrayList存放新数组,因为java里ArrayList自带了很多方法直接使用很便捷。

①接收数字n

②读入n个数字,用临时变量存储(也可以放进数组)

③读入后与使用集合的contains方法,若包含则算出距离放进arr数组,不包含则将这个数字的负值放进arr数组

④依次进行,直到n次循环结束

⑤输出结果

代码如下👇

复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n=scan.nextInt();//数组容量
		int arr[]=new int[n];//数组1存放结果
		ArrayList<Integer> arrayList=new ArrayList<>();//数组2存放原数组中间状态
		for (int i = 0; i < n; i++) {
			int t=scan.nextInt();//临时变量
			if (arrayList.contains(t)) {//在数组中寻找临时变量
				arr[i]=arrayList.size()-arrayList.indexOf(t)-1;//计算距离
				arrayList.remove((Object)(t));//删除多余的元素
				arrayList.add(t);添加新值
			}else {
				arr[i]=-t;//负值
				arrayList.add(t);//添加到数组2
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");//输出结果
		}
			    
		scan.close();
	}

测试用例:

复制代码
5
1 2 2 1 2

-1 -2 0 1 1 
相关推荐
白鲸开源几秒前
Ubuntu 22 下 DolphinScheduler 3.x 伪集群部署实录
java·ubuntu·开源
ytadpole8 分钟前
Java 25 新特性 更简洁、更高效、更现代
java·后端
纪莫34 分钟前
A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?
java·java面试⑧股
JavaGuide1 小时前
JDK 25(长期支持版) 发布,新特性解读!
java·后端
用户3721574261351 小时前
Java 轻松批量替换 Word 文档文字内容
java
白鲸开源1 小时前
教你数分钟内创建并运行一个 DolphinScheduler Workflow!
java
CoovallyAIHub2 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
Java中文社群2 小时前
有点意思!Java8后最有用新特性排行榜!
java·后端·面试
代码匠心2 小时前
从零开始学Flink:数据源
java·大数据·后端·flink
间彧2 小时前
Spring Boot项目中如何自定义线程池
java