
 
 
 二维网格迁移
class Solution {
    public List<List<Integer>> shiftGrid(int[][] grid, int k) {
        //迁移k次
        for (;k > 0; k --) {
            //最后一个元素,或者说右下角
            int previous = grid[grid.length - 1][grid[0].length - 1];
            for (int row = 0; row < grid.length; row ++) {
                for (int column = 0; column < grid[0].length; column ++) {
                    //进行一次迁移,但每个元素都需要移动,二维数组需要一个二重循环
                    int temp = grid[row][column];
                    grid[row][column] = previous;
                    previous = temp;
                }
            }
        }
        //结果
        List<List<Integer>> result = new ArrayList<>();
        //此时的grid二维数组已完成迁移
        //grid中的每一行
        for (int[] row : grid) {
            List<Integer> listRow = new ArrayList<>();
            //二维数组,按行加入
            //把有意义的头指针加入到结果二维链表中,下面的for循环
            result.add(listRow);
            
            //grid每一行中的每一个元素
            for (int r : row)
                listRow.add(r);
        }
        return result;
    }
}










