题目如下:

解题思路:记grid的行数为row,列数为col,显然经过row*col次移动后和不移动效果是一样的,所以可以首先令k = k%(row*col)。剩下的k就是每一个元素需要移动的次数,我的方法是给grid的每个元素编号,从左到右,从上到下,依次为0,1,1....row*col - 1,这样方便计算。

代码如下:

class Solution(object):
    def shiftGrid(self, grid, k):
        """
        :type grid: List[List[int]]
        :type k: int
        :rtype: List[List[int]]
        """
        row = len(grid)
        col = len(grid[0])
        k = k%(row * col)
        res = [[0] * col for _ in range(row)]
        for i in range(row):
            for j in range(col):
                inx = (i*col + j) + k
                if inx >= (row*col):inx -= row*col
                newrow = inx/col
                newcol = inx%col
                res[newrow][newcol] = grid[i][j]
        return res
01-01 00:00
查看更多