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 

猜你喜欢

转载自blog.csdn.net/sztdbk/article/details/83242133
今日推荐