java - 在 Java 中旋转 N * M 矩阵
问题描述
我正在尝试将字符网格顺时针旋转 90°。下面是一个例子:
[1, 2, 3], [7, 4, 1],
[4, 5, 6], --> [8, 5, 2],
[7, 8, 9]; [9, 6, 3];
虽然上面的示例显示了一个 3 * 3 网格 (n * n) 正在旋转,但我正在尝试找出一种旋转 * m 网格的方法,例如 6 * 5。我无法弄清楚我自己的或在网上找到任何资源。
期望的结果:
[1, 2, 3, 4], [9, 5, 1],
[5, 6, 7, 8], --> [0, 6, 2],
[9, 0, 1, 2]; [1, 7, 3],
[2, 8, 4];
解决方案
尝试这个。
static int[][] rotate90(int[][] m) {
int rows = m.length, cols = m[0].length;
int[][] n = new int[cols][rows];
for (int r = 0, cc = rows - 1; r < rows; ++r, --cc)
for (int c = 0, rr = 0; c < cols; ++c, ++rr)
n[rr][cc] = m[r][c];
return n;
}
public static void main(String args[]) {
int[][] input = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 0, 1, 2},
};
int[][] rotated = rotate90(input);
for (int[] row : rotated)
System.out.println(Arrays.toString(row));
}
输出:
[9, 5, 1]
[0, 6, 2]
[1, 7, 3]
[2, 8, 4]
推荐阅读
- reactjs - React/Redux 如何等待调度的动作完成?
- r - knitr::include_graphics() 因 PandocResourceNotFound 而失败
- html - 图像重定向居中
- git - GitHub 不允许我上传大文件
- opengl - 通用三角形网格的简单纹理映射
- json - 如何使用 jq 对 json 进行分组,然后转换为 yaml
- excel - 当值绑定到 Excel 或 Access 中的 vbNewLine 时,如何比较 VBA 中的两个值
- svg - 需要在 Xamarin 中的图像上显示 svg
- java - 我的添加请求中出现的参数比我需要填写的要多
- r - 对数据集排序,以便 geom_path() 以与人眼相同的方式连接点