LeetCode 419. Battleships in a Board
2017-01-03 17:19
190 查看
Given an 2D board, count how many different 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.
阅读题目,可以得知一下几个信息:
1.所谓的BattleShip其实就是x.
2.每个BattleShip之间会有.分割..
3.每个BattleShip应该是1*n个X或者是n*1的x组成的...
所以算法如下:
public class Solution {
public int countBattleships(char[][] board) {
int sum = 0;
int a = board.length;
int b = board[0].length;
if(a == 0 || b == 0)
return 0;
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
if(board[i][j] == '.')
continue;
if(i>0 && board[i-1][j] == 'X')
continue;
if(j>0 && board[i][j-1] == 'X')
continue;
sum++;
}
}
return sum;
}
}只需要排除非法选项就可以了.
1.当字符为.的时候
2.当i>0,board[i][j] = 'X' 并且board[i-1][j] ='X'时,也就是竖方向上有相连的X,这种情况下看做是同一个BattleShip
3.当j>0,board[i][j] = 'X' 并且board[i][j-1] = 'X'时,也就是横方向上有相连的X,也看做同一个...
除此之外的所有情况都是合法的.return sum就可以了.
'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.
阅读题目,可以得知一下几个信息:
1.所谓的BattleShip其实就是x.
2.每个BattleShip之间会有.分割..
3.每个BattleShip应该是1*n个X或者是n*1的x组成的...
所以算法如下:
public class Solution {
public int countBattleships(char[][] board) {
int sum = 0;
int a = board.length;
int b = board[0].length;
if(a == 0 || b == 0)
return 0;
for(int i=0;i<a;i++)
{
for(int j=0;j<b;j++)
{
if(board[i][j] == '.')
continue;
if(i>0 && board[i-1][j] == 'X')
continue;
if(j>0 && board[i][j-1] == 'X')
continue;
sum++;
}
}
return sum;
}
}只需要排除非法选项就可以了.
1.当字符为.的时候
2.当i>0,board[i][j] = 'X' 并且board[i-1][j] ='X'时,也就是竖方向上有相连的X,这种情况下看做是同一个BattleShip
3.当j>0,board[i][j] = 'X' 并且board[i][j-1] = 'X'时,也就是横方向上有相连的X,也看做同一个...
除此之外的所有情况都是合法的.return sum就可以了.
相关文章推荐
- LeetCode #419: Battleships in a Board
- leetcode oj java Battleships in a Board
- LeetCode[419] Battleships in a Board
- leetcode编程记录12 #688 Knight Probability in Chessboard
- 【LeetCode】419.Battleships in a Board(Medium)解题报告
- leetcode 419 Battleships in a Board C++
- LeetCode Battleships in a Board
- [LeetCode]Battleships in a Board 战舰数目
- Leetcode——Knight Probability in Chessboard
- LeetCode Knight Probability in Chessboard
- LeetCode 419 Battleships in a Board (DFS 或 模拟)
- leetcode419 Battlesships In A Board JAVA
- Battleships in a Board [Leetcode]
- 【leetcode】419. Battleships in a Board(C++ & Python)
- leetcode - 419. Battleships in a Board (logic)
- LeetCode:419. Battleships in a Board
- [LeetCode] Battleships in a Board 平板上的战船
- LeetCode "419. Battleships in a Board"
- [LeetCode] Knight Probability in Chessboard 棋盘上骑士的可能性
- Leetcode 419 Battleships in a Board