程式語言 - LeetCode - C++ - 463. Island Perimeter



題目:


解答:

class Solution {
public:
    int islandPerimeter(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        int ans = 0;

        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (grid[i][j] == 0) {
                    continue;
                }

                ans += 4;
                if (i > 0 && grid[i - 1][j] == 1) {
                    ans -= 1;
                }
                if (i < (m - 1) && grid[i + 1][j] == 1) {
                    ans -= 1;
                }
                if (j > 0 && grid[i][j - 1] == 1) {
                    ans -= 1;
                }
                if (j < (n - 1) && grid[i][j + 1] == 1) {
                    ans -= 1;
                }
            }
        }

        return ans;
    }
};