gpt4 book ai didi

java - 矩阵操作(旋转/滚动)

转载 作者:行者123 更新时间:2023-11-30 03:31:13 26 4
gpt4 key购买 nike

我有这个 3x3 矩阵:

{
[1,2,3],
[4,5,6],
[7,8,9]
}

假设如果我发送两个参数m和n,这个矩阵必须移动m和n个位置(m正/向右移动或负向左移动)和(n正/向下移动或n负向上移动)。对于示例,如果我发送 m = 1 、 n = 0:

{
[3, 1, 2],
[6, 4, 5],
[9, 7, 8]
}

有某种方法可以做到这一点吗?或者这只是“辛苦的手工”?

最佳答案

如果您准备使用List<List<Integer>>而不是int[][]您可以使用Collections.rotate(List list,int distance) .

private void rotate(List<List<Integer>> matrix, int m, int n) {
for (List<Integer> row : matrix) {
Collections.rotate(row, m);
}
Collections.rotate(matrix, n);
}

public void test() {
int[][] m = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
List<List<Integer>> matrix = new ArrayList<>();
for (int[] r : m) {
List<Integer> row = new ArrayList<>();
for (int v : r) {
row.add(v);
}
matrix.add(row);
}
System.out.println("Before: " + matrix);
rotate(matrix, 1, 2);
System.out.println("After: " + matrix);
}

打印:

Before: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

After: [[3, 1, 2], [6, 4, 5], [9, 7, 8]]

这与您的预期略有不同,但看起来很有意义。

关于java - 矩阵操作(旋转/滚动),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28985765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com