前言
通过leetcode记录自己每天坚持刷题,以此监督自己的学习。不能放假了就懈怠😁
题目简介
题目传送地: 1260. 二维网格迁移
给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。
每次「迁移」操作将会引发下述活动:
位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。
位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][0]。
位于 grid[m - 1][n - 1] 的元素将会移动到 grid[0][0]。
请你返回 k 次迁移操作后最终得到的 二维网格。
示例 1:
输入:grid = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[9,1,2],[3,4,5],[6,7,8]]
解析
这个题比较容易了,直接遍历gird然后对每个元素挨个进行k次操作然后找到k次操作后的位置填入即可
代码
class Solution:
def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int]]:
m=len(grid)
n=len(grid[0])
res=[[0 for i in range(n)] for j in range(m)]
for i in range(m):
for j in range(n):
new_m=((j+k)//n+i)%m # k次操作后所在的行位置
new_n=(j+k)%n # k次操作后所在的列位置
res[new_m][new_n]=grid[i][j]
return res