給出一個二維數組,將其逆序打印
描述:
二位數組:
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
將其按照逆時針的順序打出來如下:
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
思路
可以看出,每次打印出一次,都是將數組按照逆時針的順序所打印,然後再打印裏面的一層。最終得到結果。
代碼:
public void printArray(int[][] arr) {
int leftrow = 0, leftcol = 0, rightrow = arr.length - 1, rightcol = (arr[0].length) - 1;
while (leftrow <= rightrow && leftcol <= rightcol) {
int r = leftrow;
int c = leftcol;
while (c <= rightcol) {
System.out.print(arr[r][c++] + "\t");
}
//復位,中和上一輪多加的一次
c = rightcol;
//移動到下一行,不會重複打印
r++;
while (r <= rightrow) {
System.out.print(arr[r++][c] + "\t");
}
r = rightrow;
c--;
while (c >= leftcol) {
System.out.print(arr[r][c--] + "\t");
}
c = leftcol;
r--;
while (r > leftrow) {
System.out.print(arr[r--][c] + "\t");
}
leftrow ++;
leftcol ++;
rightcol --;
rightrow --;
}
}