java常见逻辑练习题二维数组翻转

题目:二维数组翻转,如下图:

在这里插入图片描述

首先,我们创建这个二维数组并遍历他,即:

第一步

int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}

这样,我们拿到了这个二维数组,接下来就是对这个二维数组进行翻转,分析这个翻转图,可以发现:
这个二维数组的
[0][1]和[1][0]换
[0][2]和[2][0]换
[1][2]和[2][1]换
这是一个有规律的交换,所以可以用for循环来解决这个问题,即:

第二步

for (int i = 0; i < arr.length; i++) {
			// [0][1]和[1][0]换
			// [0][2]和[2][0]换
			// [1][2]和[2][1]换
			// 可以发现,j < i,不然就又交换回去了
			for (int j = 0; j < i; j++) {
				int a = arr[i][j];
				arr[i][j] = arr[j][i];
				arr[j][i] = a;
			}
		}

解释,j < i是因为如果j >= i的话就相当于本来交换过来的顺序又交换了一遍交换回去,就没有意义了

所以最终的代码就为:

最终代码

public class Demo {
	public static void main(String[] args) {
		int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println("===============");
		// 分析:我们可以看出二维数组的翻转后的交换
		//遍历这个二维数组
		for (int i = 0; i < arr.length; i++) {
			// [0][1]和[1][0]换
			// [0][2]和[2][0]换
			// [1][2]和[2][1]换
			// 可以发现,j < i,不然就又交换回去了
			for (int j = 0; j < i; j++) {
				int a = arr[i][j];
				arr[i][j] = arr[j][i];
				arr[j][i] = a;
			}
		}
		for (int[] is : arr) {
			for (int i : is) {
				System.out.print(i + " ");
			}
			System.out.println();
		}
	}
}

控制台打印结果为:

1 2 3 
4 5 6 
7 8 9 
===============
1 4 7 
2 5 8 
3 6 9 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值