python--leetcode 419. Battleships in a Board
2017-10-06 20:56
141 查看
Given an 2D board, count how many battleships are in it. The battleships are represented with
empty slots are represented with
You receive a valid board, made of only battleships or empty slots.
Battleships can only be placed horizontally or vertically. In other words, they can only be made of the shape
row, N columns) or
At least one horizontal or vertical cell separates between two battleships - there are no adjacent battleships.
Example:
In the above board there are 2 battleships.
Invalid Example:
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?
计算战舰数量,战舰有可能横着也有可能竖着。这一题的关键就是战舰之间一定有‘.’来隔开。
因此我们可以得到一个结论:每一艘战舰,有且只有一个‘X’的前一列以及前一行都为‘.’
代码如下:
class Solution(object):
def countBattleships(self, board):
if len(board) == 0: return 0
m, n = len(board), len(board[0])
count = 0
for i in range(m):
for j in range(n):
if board[i][j] == 'X' and (i == 0 or board[i-1][j] == '.') and (j == 0 or board[i][j-1] == '.'):
count += 1
return count
'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.
Battleships can only be placed horizontally or vertically. In other words, they can only be made of the shape
1xN(1
row, N columns) or
Nx1(N rows, 1 column), where N can be of any size.
At least one horizontal or vertical cell separates between two battleships - there are no adjacent battleships.
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?
计算战舰数量,战舰有可能横着也有可能竖着。这一题的关键就是战舰之间一定有‘.’来隔开。
因此我们可以得到一个结论:每一艘战舰,有且只有一个‘X’的前一列以及前一行都为‘.’
代码如下:
class Solution(object):
def countBattleships(self, board):
if len(board) == 0: return 0
m, n = len(board), len(board[0])
count = 0
for i in range(m):
for j in range(n):
if board[i][j] == 'X' and (i == 0 or board[i-1][j] == '.') and (j == 0 or board[i][j-1] == '.'):
count += 1
return count
相关文章推荐
- 【LeetCode】419. Battleships in a Board 解题报告(Python)
- 【leetcode】419. Battleships in a Board(C++ & Python)
- 在dragonboard 410c上使用python进行GPS报文解析获取位置信息
- [leetcode]Remove Nth Node From End of List @ Python
- LeetCode 661 : Image Smoother(python)
- [Leetcode]@python 88. Merge Sorted Array.py
- [leetcode]Distinct Subsequences @ Python
- 21. Generate Parentheses Leetcode Python
- leetcode:Symmetric Tree【Python版】
- 【leetcode】sort list(python)
- [leetcode]Merge Sorted Array @ Python
- [LeetCode]题解(python):003-Longest Substring Without Repeating Characters
- python--leetcode728. Self Dividing Numbers
- [leetcode]@python 84. Largest Rectangle in Histogram
- [leetcode]Valid Parentheses @ Python
- leetcode 【 Search for a Range 】python 实现
- leetcode two sum python 实现
- 【Leetcode】【python】Maximum Depth of Binary Tree
- [leetcode]Next Permutation @ Python
- [LeetCode]题解(python):143-Reorder List