2022-6-12 真题练习
描述
有一个二维数组 (n*n) ,写程序实现从右上角到左下角沿主对角线方向打印。(注:主对角线方向为从左上角指向右下角这一斜线的方向)
给定一个二位数组 arr 及题目中的参数 n ,请返回结果数组。
数据范围: 1 \le n \le 300 \1≤n≤300
1 import java.util.*; 2 3 public class Printer { 4 public int[] arrayPrint(int[][] arr, int n) { 5 // write code here 6 int[] ans=new int[n*n]; 7 int index=0; 8 int d=n-1; 9 for (int i=0;i<n;i++){ 10 for (int x=0;x<=i;x++){ 11 12 if (x+d<n) { 13 ans[index]=arr[x][x+d]; 14 index++; 15 } 16 } 17 d--; 18 if (d<0) break; 19 } 20 for (int i=1;i<n;i++){ 21 for (int x=i;x<n;x++){ 22 if (x+d>=0){ 23 ans[index]=arr[x][x+d]; 24 index++; 25 } 26 } 27 d--; 28 if (-d>=n) break; 29 } 30 return ans; 31 } 32 }
思路:数组模拟,分为上半区和下半区。