题目描述:
对二维数组实现环形打印(具体效果见下面)
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
思想:
环形打印
- 上横(左到右,改变列)
- 右纵(上到下,改变行)
- 下横(右到左,改变列)
- 左纵(下到上,改变行)
PS:这里直接新建了一个数组,如果是给定数组,打印对应的数字即可(count对应原数组下标)
public class test1 {
public static void circularMatrix(int number) {
int row = (int)Math.sqrt(number);
int[][] nums = new int [row][row];
int count = 1;
for(int k = 0, n = row; k < n; k++, n--) {
//上横(左到右,改变列)
for(int i = k; i < n; i++)
nums[k][i] = count++;
//右纵(上到下),改变行
for(int i = k + 1; i < n; i++)
nums[i][n-1] = count++;
//下横(右到左),改变列
for(int i = n - 2; i >= k; i-- )
nums[n-1][i] = count++;
//上纵(下到上)改变行
for(int i = n - 2; i > k; i--)
nums[i][k] = count++;
}
for(int i = 0; i < row; i++) {
for(int j = 0; j < row; j++) {
System.out.print(nums[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
int number = 16;
circularMatrix(number);
}
}
// 打印结果
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7