java - 如何将二维阵列逆时针旋转 90º?
问题描述
我需要将给定的矩阵逆时针旋转 90º,但我不知道如何开始。
例如:
从此走
5 10 8 9
16 30 25 41
7 17 50 12
45 8 22 34
对此:
9 41 12 34
8 25 50 22
10 30 17 8
5 16 7 45
解决方案
这就像一个矩阵转置。您可以在循环中使用循环,或在流中使用流:
int d = 4;
int[][] arr1 = {
{5, 10, 8, 9},
{16, 30, 25, 41},
{7, 17, 50, 12},
{45, 8, 22, 34}
};
int[][] arr2 = new int[d][d];
int[][] arr3 = new int[d][d];
int[][] arr4 = new int[d][d];
IntStream.range(0, d).forEach(i ->
IntStream.range(0, d).forEach(j -> {
// matrix transpose
arr2[j][i] = arr1[i][j];
// turn matrix 90º clockwise
arr3[j][d - 1 - i] = arr1[i][j];
// turn matrix 90º counterclockwise
arr4[d - 1 - j][i] = arr1[i][j];
}));
Arrays.stream(arr4).map(Arrays::toString).forEach(System.out::println);
// [9, 41, 12, 34]
// [8, 25, 50, 22]
// [10, 30, 17, 8]
// [5, 16, 7, 45]
推荐阅读
- android - 如何解决 Firebase 找不到 firebase-auth-icense.aar 问题?
- sql - 比较上一列数据与下一列数据
- c# - 将实体框架连接字符串更改为服务器
- r - 两个单独数据集中的纬度和经度之间的距离
- json - 第 6 行有什么问题导致解析错误?
- javascript - 带有类的属性的Jquery单击事件
- adapter - 接收位置上的 SFTP 适配器不拾取没有扩展名的文件
- python - Python Pandas:有效地将 1 Col(系列)粘贴到 pd.df w/ >1 Cols 的底部;新行的其他列应该为空
- amazon-s3 - Redshift COPY 命令无法从 S3 加载数据
- java - Finder 功能不起作用,Base Adapter 调用 NullPointer