Java 如何在不使用存储阵列的情况下将二维阵列旋转90度?
我被指示不要使用存储阵列来完成此任务。基本上,我们必须创建一个函数,将2d数组的内容旋转90度 因此,如果我从这个数组开始:Java 如何在不使用存储阵列的情况下将二维阵列旋转90度?,java,arrays,matrix,multidimensional-array,rotation,Java,Arrays,Matrix,Multidimensional Array,Rotation,我被指示不要使用存储阵列来完成此任务。基本上,我们必须创建一个函数,将2d数组的内容旋转90度 因此,如果我从这个数组开始: int[][]数组={{1,2,3},{4,5,6},{7,8,9}; 函数应返回如下数组: {{7,4,1}, {8,5,2}, {9,6,3}} 同样,我们不允许在函数中使用创建的数组进行存储。 甚至不使用存储阵列也可以实现这一点吗?您可以通过逐个交换上半部分和下半部分来旋转/转置阵列: import java.util.*; import java.lang.*
int[][]数组={{1,2,3},{4,5,6},{7,8,9};
函数应返回如下数组:
{{7,4,1}, {8,5,2}, {9,6,3}}
同样,我们不允许在函数中使用创建的数组进行存储。
甚至不使用存储阵列也可以实现这一点吗?您可以通过逐个交换上半部分和下半部分来旋转/转置阵列:
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
int[][] array = new int[][] {
new int[] { 1, 2, 3},
new int[] { 4, 5, 6},
new int[] { 7, 8, 9},
};
for (int row = 0; row < 3; row++) {
for (int col = 0; col < row; col++) {
int t = array[row][col];
array[row][col] = array[col][row];
array[col][row] = t;
}
}
for (int row = 0; row < 3; row++) {
System.out.println(Arrays.toString(array[row]));
}
}
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
//你的密码在这里
int[][]数组=新int[][]{
新的int[]{1,2,3},
新的int[]{4,5,6},
新的int[]{7,8,9},
};
对于(int行=0;行<3;行++){
for(int col=0;col|
我们可以直接打印旋转矩阵,而无需保存结果,如下所示:首先迭代列,然后迭代行,然后打印点。因为我们事先不知道行的长度,即列的数量,所以我们迭代到,并在每一步检查列是否仍然存在
该算法的其余部分与创建转置2d阵列时相同。点的索引[i][j]
变为[j][i]
,但其中一条边的索引变为等于边的长度减去边的当前索引减去1
。索引从0开始
int[][]数组={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
for(int col=0;col
输出(逆时针旋转90º⟲):
另见:
•
•
4 8 12
3 7 11
2 6 10
1 5 9