题:让一个二维数组顺时针旋转90度并返回一个新的数组。
例如:
{
{1,2,3},
{4,5,6},
{7,8,9}
}
--->
{
{7,4,1},
{8,5,2},
{9,6,3}
}
public static int[][] convert(int[][] b) {
}
解答:
其实这道题不难,找到规律就好办了。
aa[0][0]=bb[2][0]
aa[0][1]=bb[1][0]
aa[0][2]=bb[0][0]
如果循环为这样
即aa[外层循环][内层循环]=bb[二维数组里的一维数组的长度-1-内层循环][外层循环]
所以代码为:
但是如果这个数组是不规则的数组的话就会报数组越界的异常。希望有人能给出解答。
例如:
{
{1,2,3},
{4,5,6},
{7,8,9}
}
--->
{
{7,4,1},
{8,5,2},
{9,6,3}
}
public static int[][] convert(int[][] b) {
}
解答:
其实这道题不难,找到规律就好办了。
aa[0][0]=bb[2][0]
aa[0][1]=bb[1][0]
aa[0][2]=bb[0][0]
如果循环为这样
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
}
}
即aa[外层循环][内层循环]=bb[二维数组里的一维数组的长度-1-内层循环][外层循环]
所以代码为:
public static int[][] convert(int[][] b) {
int[][] temp = new int[b[0].length][b.length];
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
temp[i][j]=b[b[i].length-j-1][i];
}
}
return temp;
}
public static void printArray(int[][] f) {
for (int i = 0; i < f.length; i++) {
for (int j = 0; j < f[i].length; j++) {
System.out.print(f[i][j] + " ");
}
System.out.println();
}
}
public static void main(String args[]) {
int b[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
printArray(convert(b));
}
但是如果这个数组是不规则的数组的话就会报数组越界的异常。希望有人能给出解答。