让一个二维数组顺时针旋转90度

题:让一个二维数组顺时针旋转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]
如果循环为这样

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));
}




但是如果这个数组是不规则的数组的话就会报数组越界的异常。希望有人能给出解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值