题解 | #向左移动牛群II#
向左移动牛群II
https://www.nowcoder.com/practice/2467ddd80a2942abbaa752f3c874dd79
- 题目考察的知识点
是模拟和数组操作的基本知识,以及对于翻转和循环移位的理解。
- 题目解答方法的文字分析
- 构造一个 n×n 的矩阵
matrix,并将其中每个元素赋值为从 1 到 n^2 的连续整数。 - 进行 k 次移动操作,每次移动都需要构造一个新的 n×n 的矩阵
newMatrix。对于matrix中的每个元素(i, j),计算它在新矩阵newMatrix中的位置(newRow, newCol),然后将matrix[i][j]的值复制到newMatrix[newRow][newCol]中。 - 将移动后的结果保存到
matrix中,并重复步骤 2 直到完成 k 次移动操作。 - 返回最终的移动结果
matrix。
- 本题解析所用的编程语言
Python
- 完整且正确的编程代码
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @param k int整型
# @return int整型二维数组
#
class Solution:
def rotateII(self , n: int, k: int) -> List[List[int]]:
# 构造初始矩阵
matrix = [[(i*n+j) for j in range(1, n+1)] for i in range(n)]
# 进行 k 次移动操作
for move in range(k):
new_matrix = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
# 计算新坐标
new_i = (i - 1 + n) % n
new_j = (j - 1 + n) % n
new_matrix[new_i][new_j] = matrix[i][j]
matrix = new_matrix
return matrix
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路
