[LeetCode]419. Battleships in a

2017-05-10  本文已影响21人  Eazow
题目

Given an 2D board, count how many battleships are in it. The battleships are represented with 'X's, empty slots are represented with '.'s. You may assume the following rules:

  • You receive a valid board, made of only battleships or empty slots.

Example:

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

In the above board there are 2 battleships.
**Invalid Example: **

...X
XXXX
...X

This is an invalid board that you will not receive - as battleships will always have a cell separating between them.
Follow up:
Could you do it in one-pass, using only O(1) extra memory and without modifying the value of the board?

难度

Medium

方法

遍历board,对于board[i][j]=='X',如果board[i-1][j]或者board[i][j-1]不为'X'(i-1j-1均得>=0),则board[i][j]=='X'为一个battleship

python代码
class Solution(object):
    def countBattleships(self, board):
        """
        :type board: List[List[str]]
        :rtype: int
        """
        count = 0
        for i in range(len(board)):
            for j in range(len(board[0])):
                if board[i][j]=='X' and ((i > 0 and board[i-1][j]!='X') or i==0) and ((j > 0 and board[i][j-1]!='X') or j==0):
                    count += 1

        return count

assert Solution().countBattleships(["X..X","...X","...X"]) == 2
assert Solution().countBattleships(["...X","XXXX","...X"]) == 2
上一篇 下一篇

猜你喜欢

热点阅读