Leetcode 419.甲板上的战舰
甲板上的战舰
给定一个二维的甲板, 请计算其中有多少艘战舰。 战舰用 'X'表示,空位用 '.'表示。 你需要遵守以下规则:
- 给你一个有效的甲板,仅由战舰或者空位组成。
 - 战舰只能水平或者垂直放置。换句话说,战舰只能由 1xN (1 行, N 列)组成,或者 Nx1 (N 行, 1 列)组成,其中N可以是任意大小。
 - 两艘战舰之间至少有一个水平或垂直的空位分隔 - 即没有相邻的战舰。
 
示例 :
X..X
...X
...X
在上面的甲板中有2艘战舰。
无效样例 :
...X
XXXX
...X
你不会收到这样的无效甲板 - 因为战舰之间至少会有一个空位将它们分开。
进阶:
你可以用一次扫描算法,只使用O(1)额外空间,并且不修改甲板的值来解决这个问题吗?
题目进阶要求一次遍历完,并且使用O(1)的空间复杂度,那么就不能像解法一那样再声明一个记录访问标志的二维数组。我们可以通过军舰的起点计算军舰数,所谓起点,就是指一条军舰上最左边的那个'X'或者最上面的那个'X'。
 public class Solution {
     public int countBattleships(char[][] board) {
         int res = 0, height = board.length, width = board[0].length, i, j;
         for (i = 0; i < height; i++)
             for (j = 0; j < width; j++) {
                 if (board[i][j] == '.' || (i > 0 && board[i - 1][j] == 'X')
                         || j > 0 && board[i][j - 1] == 'X')
                     continue;
                 res++;
             }
         return res;
     }
 }
Leetcode 419.甲板上的战舰的更多相关文章
- Java实现 LeetCode 419 甲板上的战舰
		
419. 甲板上的战舰 给定一个二维的甲板, 请计算其中有多少艘战舰. 战舰用 'X'表示,空位用 '.'表示. 你需要遵守以下规则: 给你一个有效的甲板,仅由战舰或者空位组成. 战舰只能水平或者垂直 ...
 - 419 Battleships in a Board 甲板上的战舰
		
给定一个二维的甲板, 请计算其中有多少艘战舰. 战舰用 'X'表示,空位用 '.'表示. 你需要遵守以下规则: 给你一个有效的甲板,仅由战舰或者空位组成. 战舰只能水平或者垂直放置.换句话 ...
 - [Swift]LeetCode419. 甲板上的战舰 | Battleships in a Board
		
Given an 2D board, count how many battleships are in it. The battleships are represented with 'X's, ...
 - [LeetCode] 419. Battleships in a Board 平板上的战船
		
Given an 2D board, count how many battleships are in it. The battleships are represented with 'X's, ...
 - leetcode 419
		
题目说明: Given an 2D board, count how many different battleships are in it. The battleships are represe ...
 - leetcode 149. 直线上最多的点数 解题报告
		
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...
 - Leetcode 149.直线上最多的点数
		
直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o ...
 - Java实现 LeetCode 149 直线上最多的点数
		
149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | ...
 - LeetCode "419. Battleships in a Board"
		
The follow-up question is fun: "Could you do it in one-pass, using only O(1) extra memory and w ...
 
随机推荐
- java校验maven下载的jar文件
			
有时候maven真的很坑! 有时候提示invalid LOC header (bad signat signature), 但又有时候什么都不提示,工程报错,情况有肯多中,不知道大家遇到过几种诡异的. ...
 - JavaScript_4_数据类型
			
1. JavaScript对大小写敏感. 2. JavaScript是脚本语言.浏览器会在读取代码时,逐行地执行脚本代码.而对于传统编程来说,会在执行前对所有代码进行编译. 3. 变量什么用var, ...
 - 【TensorFlow入门完全指南】模型篇·最近邻模型
			
最近邻模型,更为常见的是k-最近邻模型,是一种常见的机器学习模型,原理如下: KNN算法的前提是存在一个样本的数据集,每一个样本都有自己的标签,表明自己的类型.现在有一个新的未知的数据,需要判断它的类 ...
 - 关于日志造成的频繁的IO
			
记录日志可能消耗大量的IO [Q] 每次写入都是一个IO操作 即使是同一个文件 两次写入也要打开两次IO操作 [F] 设想有这样一个扩展 把php中要记录的日志 用文件名 和 内容的方式记录在内存中 ...
 - MovieReview—Ghost in the Shell(攻壳机动队:笑脸男事件,个别的11人事件)
			
AI with Wisdom I have recently watched two films in the series of Ghost in the Shell, Smilin ...
 - OpenGL小试牛刀第一季
			
效果截图:代码展示:using System;using System.Collections.Generic;using System.ComponentModel;using System.Dat ...
 - 《大规模 web服务开发》笔记
			
大规模服务: 可扩展,负载均衡,保证冗余,低运维成本,开发人数和开发方法的变化 数据处理: 磁盘—>内存—>缓存—>CPU 障碍: 持续增长的服务,”无法在内 ...
 - Centos7.3 安装devstack stein版本
			
1. 系统准备 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭selinux setenforce 0 sed -i ...
 - mini_httpd的安装和配置
			
1.下载:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz 2.解压:tar zxvf mini_httpd-1.19.ta ...
 - vscode的eslint插件不起作用
			
最近在用vue进行开发,但是vsCode中的eslint插件装上之后不起作用 1.vsCode打开“设置”,选择"settings.json" 2.输入一段脚本 "esl ...