https://leetcode.com/problems/island-perimeter/ Easy

Условие

Дан двумерный сеточный массив grid, состоящий из 0 (вода) и 1 (земля). В сетке существует ровно один остров (связная область из 1), окружённый водой. Необходимо определить периметр этого острова.

Решение

class Solution {
    fun islandPerimeter(grid: Array<IntArray>): Int {
        var perimeter = 0
        val rows = grid.size
        val cols = grid[0].size

        for (i in 0 until rows) {
            for (j in 0 until cols) {
                if (grid[i][j] == 1) {
                    perimeter += 4
                    if (i > 0 && grid[i - 1][j] == 1) perimeter -= 2
                    if (j > 0 && grid[i][j - 1] == 1) perimeter -= 2
                }
            }
        }

        return perimeter
    }
}