import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param k int整型 * @return int整型二维数组 */ public int[][] rotateII (int n, int k) { // write code here k %= n; int[][] g = new int[n][n]; int idx = 1; for (int i = n - k; i < n; i++) { for (int j = n - k; j < n; j++) { g[i][j] = idx++; } for (int j = 0; j < n - k; j++) { g[i][j] = idx++; } } for (int i = 0; i < n - k; i++) { for (int j = n - k; j < n; j++) { g[i][j] = idx++; } for (int j = 0; j < n - k; j++) { g[i][j] = idx++; } } return g; } }
Java编程语言。
该题考察的知识点包括:
- 二维数组的使用:在Java中,使用
int[][]
表示二维数组,并可以通过索引访问和修改数组元素。 - 循环控制:使用
for
循环结构来遍历数组元素,并根据特定条件执行相应的操作。
代码的文字解释如下:
- 对于给定的整数
k
,使用k %= n
操作将k
限制在[0, n)范围内,以处理k
大于n
的情况。 - 创建一个大小为
n
xn
的二维数组g
,并将所有元素初始化为0。 - 然后,使用两个嵌套的
for
循环,从n - k
到n
遍历数组的右上角区域。在这个区域内,将数组元素依次赋值为idx,然后idx自增1。 - 使用另外两个嵌套的
for
循环,从0到n - k
遍历数组的左下角区域。在这个区域内,同样将数组元素依次赋值为idx,然后idx自增1。 - 返回生成的二维数组
g
作为结果。