# 419 Battleships in a Board

先簡單講一下這題要求什麼。

input是一個char matrix,裡面有 'X'' . ' 兩種元素

相連的X代表是同一艘battleship,

board如下,代表有兩艘battleships,

X . . X
. . . X
. . . X

感覺跟number of islands差不多。

解法是跑過board裡的每個element,

當找到某battleship的最左上元素時,counter++,

當找到 '.' 或找到某X左邊或上面已經有X時,counter就不++。

完整程式碼:

public int countBattleships(char[][] board) {
        int m = board.length;
        if (m==0) return 0;
        int n = board[0].length;

        int count=0;

        for (int i=0; i<m; i++) {
            for (int j=0; j<n; j++) {
                if (board[i][j] == '.') continue;
                if (i > 0 && board[i-1][j] == 'X') continue;
                if (j > 0 && board[i][j-1] == 'X') continue;
                count++;
            }
        }

        return count;
    }

results matching ""

    No results matching ""