https://leetcode.com/problems/matrix-cells-in-distance-order/description/ Easy

Решение

class Solution {
    fun allCellsDistOrder(rows: Int, cols: Int, rCenter: Int, cCenter: Int): Array<IntArray> {
        val d0 = rCenter + cCenter
        val d1 = rCenter + (cols - 1 - cCenter)
        val d2 = (rows - 1 - rCenter) + cCenter
        val d3 = (rows - 1 - rCenter) + (cols - 1 - cCenter)
        val maxD = maxOf(d0, d1, d2, d3)
        val cnt = IntArray(maxD + 1)
        var r = 0
        while (r < rows) {
            var c = 0
            while (c < cols) {
                val d = kotlin.math.abs(r - rCenter) + kotlin.math.abs(c - cCenter)
                cnt[d]++
                c++
            }
            r++
        }
        var sum = 0
        var i = 0
        while (i <= maxD) {
            val t = cnt[i]
            cnt[i] = sum + t
            sum += t
            i++
        }
        val res = Array(rows * cols) { IntArray(2) }
        r = 0
        while (r < rows) {
            var c = 0
            while (c < cols) {
                val d = kotlin.math.abs(r - rCenter) + kotlin.math.abs(c - cCenter)
                val idx = --cnt[d]
                res[idx][0] = r
                res[idx][1] = c
                c++
            }
            r++
        }
        return res
    }
}