题解 | #向左移动牛群II#

向左移动牛群II

https://www.nowcoder.com/practice/2467ddd80a2942abbaa752f3c874dd79

  • 题目考察的知识点

是模拟和数组操作的基本知识,以及对于翻转和循环移位的理解。

  • 题目解答方法的文字分析
  1. 构造一个 n×n 的矩阵 matrix,并将其中每个元素赋值为从 1 到 n^2 的连续整数。
  2. 进行 k 次移动操作,每次移动都需要构造一个新的 n×n 的矩阵 newMatrix。对于 matrix 中的每个元素 (i, j),计算它在新矩阵 newMatrix 中的位置 (newRow, newCol),然后将 matrix[i][j] 的值复制到 newMatrix[newRow][newCol] 中。
  3. 将移动后的结果保存到 matrix 中,并重复步骤 2 直到完成 k 次移动操作。
  4. 返回最终的移动结果 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题的解法思路

全部评论

相关推荐

球Offer上岸👑:可能是大环境太差了 太卷了 学历也很重要 hc也不是很多 所以很难
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务