java - 是否有以这种方式重新排列二维数组的公式?
问题描述
有没有一个公式来排序这个数组
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20 21
至
1 4 7
10 13 16
19 2 5
8 11 14
17 20 3
6 9 12
15 18 21
您将第一列放在二维数组中的第一个位置
这些是重新定位后它应该的位置
[0][0] --> [0][0]
[1][0] --> [0][1]
[2][0] --> [0][2]
[3][0] --> [1][0]
[4][0] --> [1][1]
[5][0] --> [1][2]
[6][0] --> [2][0]
[0][1] --> [2][1]
[1][1] --> [2][2]
[2][1] --> [3][0]
[3][1] --> [3][1]
[4][1] --> [3][2]
[5][1] --> [4][0]
[6][1] --> [4][1]
[0][2] --> [4][2]
[1][2] --> [5][0]
[2][2] --> [5][1]
[3][2] --> [5][2]
[4][2] --> [6][0]
[5][2] --> [6][1]
[6][2] --> [6][2]
我可以看到模式,但想不出公式
我想用这个,如果我是对的
for(int i = 0 ; i < 3 ; i++){
for(int j = 0 ; j < 7 ; j++){
//do something here
}
}
解决方案
你可以这样做:
public static int[][] rearrange(int[][] input) {
int rows = input.length, cols = input[0].length, total = rows * cols;
int[][] output = new int[rows][cols];
for (int i = 0; i < total; i++)
output[i / cols][i % cols] = input[i % rows][i / rows];
return output;
}
测试
int[][] input = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}, {16, 17, 18}, {19, 20, 21}};
System.out.println(Arrays.deepToString(rearrange(input)));
输出
[[1, 4, 7], [10, 13, 16], [19, 2, 5], [8, 11, 14], [17, 20, 3], [6, 9, 12], [15, 18, 21]]
推荐阅读
- html - 降低文本框的高度
- git - 如何确保提交已修改的隐藏文件?
- c - 如何从 char 缓冲区创建 long int?
- rx-java - 如何在 RxJava 中测试订阅者
- python - 突然我的终端改变并在最后开始说 -zsh 并在使用带有枕头的文件时停止工作
- java - 部署在 heroku 上的 Java Maven 项目无法启动并崩溃。应用程序错误 H10
- kubernetes-ingress - 如何解决 nginx 入口中的路径冲突?
- javascript - 编写一个由 Django 视图接收的 AJAX POST 请求
- c# - DataGridView问题(导入到excel)C#
- flutter - SharedPreferences 值需要每隔一段时间重置一次