419. Battleships in a Board

2024-04-20 09:48
文章标签 board 419 battleships

本文主要是介绍419. Battleships in a Board,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

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.
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?

Subscribe to see which companies asked this question.


思路

找船的个数,本质上就是找能够构成船的起点,最左上角的点的个数


代码

class Solution {
public:int countBattleships(vector<vector<char>>& board) {size_t row = board.size();if(row == 0){return 0;}size_t col = board[0].size();size_t count = 0;for(size_t i=0;i<row;i++){for(size_t j=0;j<col;j++){if(board[i][j] == 'X'&& (i == 0 || board[i-1][j] != 'X')&& (j == 0 || board[i][j-1] != 'X')){count++;}}}return count;}
};

这篇关于419. Battleships in a Board的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919921

相关文章

【UVA】10652-Board Wrapping(凸包问题)

又增加了2个模板。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vector>#include <queue>#include <stack>#include <algorithm>usi

调用Jira API 获取Project的Board参数和Sprint参数

每个jira项目都有sprint参数和board参数,关系为一对多的关系。 project 和 board > 1对nboard 和 sprint > 1对n 如果想要查询一个项目具有哪些正在进行的sprint,还需要费一番功夫。 因为目前jira -api的python库里并没有给出方法,不过我们可以通过下面的方法获得: 通过get请求,根据项目的key或者ID获得board信息

Renesa Version Board开发RT-Thread 之Client(WIFI)和上位机的数据传输

目录 概述 1 系统框架 1.1  模块介绍 1.1 Version-Board 开发板 1.1.1 Vision-Board简介 1.1.2 Vision-Board的资源 1.2 框架介绍 2 上位机App 2.1 UI设计  2.2 代码实现 3 功能测试 3.1 网络连接 3.2 功能测试 概述 本文主要Renesa Version Board开发RT

leetcode419 Battlesships In A Board JAVA

Description 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

2014 ACM-ICPC World Final Info board

现在是2014年6月26日00:07:21,同样也是2014年acm wf结束的当晚,几家欢喜几家愁,真的是不知道最近在干些什么就是懈怠了也木有以前那种干劲了,恩,这么说吧就是游戏玩起来了,暑假有时候是需要节制的否则这个暑假就这么浪费了有些可惜,着实是这么表示,而且2015年的亚洲区会在NEU举办,下面附张榜单,哎其他的就不说什么了,表示到了这个时候追悔莫及还是可以的只要不继续越陷越深就好了。缓步

FATE Board 执行流程探索

背景介绍 FATE Board 是 FATE 提供的一个工程,用于给 FATE 提供可视化能力,方便在联邦学习训练中实时查看执行状态,更好地定位执行中遇到的问题。 查看 FATE 架构可以看到 FATE Board 是建立在 MySQL 和 FATE Flow Server 的基础上的,看起来数据来源是来自于这两者。FATE Flow Server 在之前的文章 中已经介绍过,FATE 中隐私

poj1691--Painting A Board(拓扑+dfs)

题目链接:点击打开链接 题目大意:一个矩形由n个小矩形组成,现在要给小矩形染色,但是颜料会向下滑,为了防止弄乱颜料,所以要先染上面的矩形,后然染下面的矩形,每一次改变颜色都要用一个新的刷子,问最小用多少刷子。 按照染色的条件,可以找到一个拓扑序列,拓扑序列中前面的要先染,后面的要后染,按拓扑的顺序dfs找出最少的刷字数。 #include <cstdio>#include <cstri

LeetCode:419. 甲板上的战舰(遍历 Java)

目录 419. 甲板上的战舰 题目描述: 实现代码与解析: 遍历 原理思路: 419. 甲板上的战舰 题目描述:         给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按

419. 甲板上的战舰 Medium

给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的

419. 甲板上的战舰

题目 给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的战舰的数量。 战舰只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻