题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int lev = in.nextInt();
int number = 1;
// 申明一个2维数组,数组的长度是录入的长度lev
// 数组内的值默认都是0,我们只需要给对应的位置赋值就行
// 数组的索引位置大致如下
// 因为是蛇形矩阵,所以我们每次循环遍历的赋值的顺序大致如下,
// 第一个可以理解二维数组的x,第二位为二维数组的y:array[x][y]
// 第一次遍历:
// 00
// 第二次遍历:
// 00 01
// 10
// 第三次遍历
// 00 01 02
// 10 11
// 20
// 第四次遍历
// 00 01 02 03
// 10 11 12
// 20 21
// 30
// 通过观察发现,每次遍历x+y的值都等于遍历的次数,
// 例如第三次遍历的值为20,11,02的合都是3,
// 同时发现每次都是x-1,y+1
int[][] array = new int[lev][lev];
int x = 0;
int y = 0;
for (int i = 0; i < lev; i++) {
array[x][y] = number++;
while (x - 1 >= 0) {
x--;
y++;
array[x][y] = number++;
}
y = 0;
x = i + 1;
}
for (int[] as : array) {
for (int i : as) {
if (i == 0) {
break;
}
System.out.print(i + " ");
}
System.out.println();
}
}
}

查看3道真题和解析