每日一题(小白)暴力娱乐篇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;
	}

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

相关推荐
Anastasiozzzz1 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
fqbqrr6 小时前
2606C++,C++构的多态
开发语言·c++
biter down7 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
小欣加油7 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly7 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
wang09077 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java7 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
徐小夕8 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab8 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器