2017-08-23 84 views
1
public class Rotate 
{ 
public static int[][] rotateArray(int[][] orig) 
{ 
    int[][] neo = new int[orig.length][orig[0].length]; 
    for(int r = 0; r < orig.length; r++) 
    { 
     for(int c = 0; c < orig[0].length; c++) 
     { 
      neo[(orig.length - 1) - c][r] = orig[r][c]; 
     } 
    } 
    return neo; 
} 
} 

这个问题已经回答过了,但因为我是新来的编程和我所知道的是Java,我无法跟随我发现了最好的例子,因为它在C#中。对不起,重复。 我命名新的旋转阵列neo,因为我想要原创和新的,但后来记住新不能用于名称变量,所以我用neo这意味着新的:)试图顺时针旋转90度的二维数组,但它会逆时针

+0

不要紧,如果它是c#或java,算法不是语言特定的。如果你已经有C#的解决方案,你可以按照他们的算法。 – want2learn

+0

这是不正确的:'int [] [] neo = new int [orig.length] [orig [0] .length];' –

+0

最好像这样:int [] [] neo = new int [orig [0] .length] [orig.length];' –

回答

0

这是一个简单的代码示例修改。注意旋转的数组维数和旋转代数是如何改变的。

static int[][] rotateArrayCW(int[][] orig) { 
    final int rows = orig.length; 
    final int cols = orig[ 0 ].length; 

    final int[][] neo = new int[ cols ][ rows ]; 

    for (int r = 0; r < rows; r++) { 
     for (int c = 0; c < cols; c++) { 
      neo[ c ][ rows - 1 - r ] = orig[ r ][ c ]; 
     } 
    } 

    return neo; 
} 
相关问题