题目描述
给定一个m行n列第二维网格grid和一个整数k。将二维网格的数字移动k次;
示例1:
进行1次移动后的结果
这道题的要求如下:
位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。
位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][0]。
位于 grid[m - 1][n - 1] 的元素将会移动到 grid[0][0]。
解题思路
这道题解法是将二维数组转换成一维数组;
将二维数组转换成一维数组的公式:
int index=i*n+j ,其中i、j代表二维数组下标,n代表有多少列;
然后再将一维数组移动k个位置,执行
int nextIndex = (index + k) % total; 其中total是二维数组大小,total=m*n
最后计算新的二维数组的下标,执行
int row = nextIndex / n;