当前位置: 首页 > news >正文

每日一题(小白)暴力娱乐篇23

由题意得知给我们一串数字,我们每次交换两位,最少交换多少次成功得到有顺序的数组。我们以平常的思维去思考,加入给你一串数字获得最少的交换次数,意味着你的交换后续基本不会变,比如说2 1 3 5 4 中1与2交换后不变,4与5交换后不变。而且已知给出的数字必定和下标顺序一致,那么我们可以更换数字直到它和对应下标相同即可得到结果。

①数组接收数据

②循环遍历数组,和下标不对应就进行更换直到对应下标相同

③找到对应下标的数字后交换两个数字

④每次交换使用计数器加1

⑤输出计数器结果

代码如下👇

	public static void main(String[] args) {
			Scanner scan=new Scanner(System.in);
		    int n=scan.nextInt();
		    int[] arr=new int[n+1];
		    for (int i = 1; i <= n; i++) {
				arr[i]=scan.nextInt();
			}
		    int count=0;
		    for (int i = 1; i <= n; i++) {//遍历数组
				while(arr[i]!=i) {//r如果位置不对,一直更换到位置对
					int temp=arr[arr[i]];
					arr[arr[i]]=arr[i];
					arr[i]=temp;
					++count;
				} 
				for (int j = 1; j < arr.length; j++) {
				System.out.print(arr[j]+" ");//测试
			}
				System.out.println();//测试
			}
		    System.out.println(count);
		  
		    
			scan.close();
    }
	public static void swap(int a,int b) {
		int temp=0;
		temp=a;
		a=b;
		b=temp;
	}

交换代码如上,如果觉得第一个代码比较复杂可以看一下图示,或者写一个全局方法。

http://www.dtcms.com/a/121631.html

相关文章:

  • 如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理
  • 「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
  • 企业资源计划(ERP)系统:数字化转型的核心引擎
  • DFS--
  • 防止黑客篡改数据,Java整合SHA-256算法数字摘要的应用
  • 编译好的sentry SDK以及sentry-cli上传pdb文件
  • 走进底层 - JVM工作原理入门指南
  • 大模型备案语料安全要求解析
  • 2025.04.09【Sankey】| 生信数据流可视化精讲
  • LeetcodeBST2JAVA
  • 卡牌收集者1.0
  • JMH 基准测试实战:Java 性能对比的正确打开方式!
  • sqlite3基本语句
  • BUUCTF-web刷题篇(17)
  • Three.js 入门实战:安装、基础概念与第一个场景⭐
  • go语言应该如何学习
  • SQL:JOIN 完全指南:从基础到实战应用
  • EFA-YOLO:一种高效轻量的火焰检测模型解析
  • 【期中准备】电路基础(西电)
  • MySQL事务管理
  • 3 版本控制:GitLab、Jenkins 工作流及分支开发模式实践
  • Kubernetes 深入浅出系列 | 容器剖析之容器安全
  • 链路聚合+vrrp
  • 写给新人的深度学习扫盲贴:ReLu和梯度
  • DocLayout-YOLO:通过多样化合成数据与全局-局部感知实现文档布局分析突破
  • 【Java内存区域有什么?每个区域有什么作用?】
  • 跨站脚本攻击(XSS)与跨站请求伪造(CSRF)的介绍、区别和预防
  • 程序化广告行业(74/89):行业发展驱动因素与未来展望
  • 帆软fvs文件中某表格新增数据来声提醒
  • Kotlin日常使用函数记录