首页 > 其他分享 >Leetcode419 甲板上的战舰

Leetcode419 甲板上的战舰

时间:2024-06-11 13:21:44浏览次数:18  
标签:count Leetcode419 位置 int 甲板 board 战舰

最近以来,我在力扣上坚持完成每天一题,今天系统推的题目为《甲板上的战舰》,在此记录一下。
题目描述如下:
给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。
战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。

示例 1:

输入:board = [["X",".",".","X"],[".",".",".","X"],[".",".",".","X"]]
输出:2

示例 2:
输入:board = [["."]]
输出:0

拿到题目后,我的大致思路是这样的:
1.定义一个count计数器,初始值为0
2.战舰的摆放有哪些情况?经过思考后,我认为有以下三种情况:
<1>该战舰为一个单独的“点”,即只占数组中一个格子
<2>该战舰为1×k类型的战舰,即纵向战舰,k>=2
<3>该战舰为k×1类型的战舰,即横向战舰,k>=2
3.什么时候count增加?
对于一艘战舰,我们遍历数组时,只在战舰的头部(即首次在该艘战舰上扫描到'X'时)将count+1,之后再次在该艘战舰上扫描到'X'则不再增加
4.返回count值,程序结束

ok,思路有了,这道题已经做的十有八九了,接下来我们再来思考一个问题,即如何判断我们扫描到的'X'是否是某艘战舰的头部呢?
当我们扫描到board[i][j]位置时,如果该位置为'X',并且该位置左侧以及该位置上侧不为'X',则该位置为某艘战舰的头部,此时count++
要注意的是,当i=0时,该位置是没有上侧的;当j=0时,该位置没有左侧。
代码如下:

点击查看代码
public int countBattleships(char[][] board) {
    int count = 0;
    for(int i=0; i<board.length; i++){
        for(int j=0; j<board[i].length; j++){
            if(board[i][j] == 'X'){
                if((i==0 || board[i-1][j]=='.')&& (j==0 || board[i][j-1]=='.'))
                count++;
            }
        }
    }
    return count;
}

标签:count,Leetcode419,位置,int,甲板,board,战舰
From: https://www.cnblogs.com/fkaa/p/18241888

相关文章

  • 力扣-419. 甲板上的战舰
    1.题目题目地址(419.甲板上的战舰-力扣(LeetCode))https://leetcode.cn/problems/battleships-in-a-board/题目描述给你一个大小为mxn的矩阵board表示甲板,其中,每个单元格可以是一艘战舰'X'或者是一个空位'.',返回在甲板board上放置的战舰的数量。战舰只能水平......
  • 推荐海贼王航海王之暴风战舰手游
    精致还原动画经典剧情,知名角色悉数登场,100%原味再现草帽海盗团。游戏人物设计全面贴合原作设定,用心打磨场景、动作细节刻画,无损还原粉丝心目中的大航海时代!海贼王航海王之暴风战舰动漫卡通改编稀有放置卡牌回合剧情 演示地址:www.runruncode.com/shouyou/19469.html ......
  • OpenCV计算相机与装甲板之间的距离
    这个距离的计算需要建立在得知平移矩阵的计算上,想要了解平移矩阵获取的可以移步:https://www.cnblogs.com/nobodyx/p/17297244.html先看一下代码#include<iostream>#include<cmath>usingnamespacestd;doubledistance(doublex1,doubley1,doublez1,doublex2,dou......
  • RM-对装甲板灯条进行识别代码分析
    最近要完成装甲板灯条识别的任务,但我本身对于OpenCV的了解还是甚微,所以只能是借鉴他人的代码并加以自身的理解。这里我借鉴的是https://blog.csdn.net/weixin_64054906/article/details/126674493这里我逐段加以自己的分析。1.引用头文件#include"stdio.h"#include<iostream>......
  • 上交自瞄算法开源代码-装甲板识别功能分析
    前言开源代码github网址:GitHub-xinyang-go/SJTU-RM-CV-2019:上海交通大学RoboMaster2019赛季视觉代码这里着重分析主函数main.cpp与装甲板识别部分的工程文件armer......
  • 装甲板CNN试题
    代码说明make_txt.py用来创建含有图片路径与标签文档的程序,但是如果样本中有重名文件(a.jpg和a(2).jpg)需要将第二个删掉,否则深度神经由于无法找到图片而报错。可以将......
  • 银河战舰——云开发组 三等奖
    惠州学院 银河战舰荣获2022年第五届“航天宏图&华为云杯”PIE软件开发者大赛云开发组三等奖 作品名称:基于PIE-Engine的南海海域水质动态监测团队简介:陈佳升、尹辉......
  • 击中战舰
    击中战舰李华在玩一款叫做《海战》的小游戏,下面是游戏介绍。给定一个$1\timesn$的方格矩阵,方格从左到右依次编号为$1\simn$。在这个方格矩阵中,隐藏着$a$个战舰......