https://leetcode.com/problems/shift-2d-grid/description/ Easy

Условие

Дана двумерная матрица grid размером m x n и целое число k. Необходимо выполнить операцию сдвига 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 раз.

Решение

class Solution {
    fun shiftGrid(grid: Array<IntArray>, k: Int): List<List<Int>> {
        val m = grid.size
        val n = grid[0].size
        val total = m * n
        val result = Array(m) { IntArray(n) }
        for (i in 0 until m) {
            for (j in 0 until n) {
                val index = (i * n + j + k) % total
                result[index / n][index % n] = grid[i][j]
            }
        }
        return result.map { it.toList() }
    }
}