首页 > 其他分享 >Day 19:419. 甲板上的战舰

Day 19:419. 甲板上的战舰

时间:2024-06-12 22:01:14浏览次数:15  
标签:19 扫描 ++ 419 int board && 战舰 Day

Leetcode 419. 甲板上的战舰

给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。

战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。

image.png

扫描整个矩阵。遇到战舰,就判断它所在的一行/列连续的是否还有其他战舰,遇到战舰就把设置为已经扫描过的。
先扫描行还是先扫描列都可以,但是,如果扫描行的时候后面有连续的组成战舰,就不能再扫描列了。
避免出现以下情况少算了了。
image.png

完整代码

class Solution {
    public int countBattleships(char[][] board) {
        int res = 0;
        int m = board.length;
        int n = board[0].length;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (board[i][j] == 'X') {
                    res++;
                    board[i][j] = '.';
                    // 列
                    if (((i + 1) < m) && (board[i + 1][j] == 'X')) {
                        int t = i + 1;
                        while (t < m && board[t][j] == 'X') {
                            board[t][j] = '.';
                            t++;
                        }
                        continue;
                    }
                    // 行
                    if (((j + 1) < n) && (board[i][j + 1] == 'X')) {
                        int t = j + 1;
                        while (t < n && board[i][t] == 'X') {
                            board[i][t] = '.';
                            t++;
                        }
                        continue;
                    }
                }
            }
        }
        return res;
    }
}

标签:19,扫描,++,419,int,board,&&,战舰,Day
From: https://blog.csdn.net/weixin_46091073/article/details/139637575

相关文章

  • 从零手写实现 nginx-19-HTTP CORS(Cross-Origin Resource Sharing,跨源资源共享)介绍+解
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 力扣第198题“打家劫舍”
    关注微信公众号数据分析螺丝钉免费领取价值万元的python/java/商业分析/数据结构与算法学习资料在本篇文章中,我们将详细解读力扣第198题“打家劫舍”。通过学习本篇文章,读者将掌握如何使用动态规划来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以......
  • Day26.管理员功能框架搭建
    1.管理员功能框架搭建 管理员功能框架搭建,src.py中的代码:#10.管理员功能@common.login_authdefadmin():fromATM.coreimportadminadmin.admim_run() 管理员功能框架搭建,admin.py中的代码:fromATM.coreimportsrc#添加账户defadd_user():......
  • Day26.记录流水、流水功能
    1.记录流水、流水功能_银行业务接口(bank_interface.py)函数中添加记录流水功能2.记录流水、流水功能_用户视图层(src.py)和银行业务接口(bank_interface.py)查看流水功能查看流水:src.py中的代码#7.查看流水,需要先记录流水@common.login_authdefcheck_flow():#直......
  • Day49 代码随想录打卡|二叉树篇---二叉搜索树中的搜索
    题目(leecodeT700):给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在BST中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null 。方法:递归法:本题考察了二叉搜索树的特性,二叉搜索树指的是在这个二叉树中,他的每一个根节点......
  • windows server 2019 操作步骤和知识点(第一节)
    windowsserver1.1vmwareworkstation作用模拟硬件模拟操作系统步骤安装1模拟硬件文件新建虚拟机典型稍后安装操作系统Mcirosoftwindowswindows10X64win10-1d:/xujiji/win10-12模拟操作系统CD\DVD(SATA)使用ISO映像文件d:\iso\win10..........
  • HX519 防倒流数据线芯片IC
    一般概述    苹果iPhone防倒流数据线芯片,可完美支持iPhone、iPad、iPod等8针闪电接口的数据传输同步功能及充电功能。特点❥集成度高,极少的外围元器件。❥电路简单,价格优势明显。❥稳定性高,兼容性强。❥与市面上普通的芯片相比,可以防止手机电流从数据线逆流❥......
  • Day26.转账功能
    1.转账功能_用户视图层(src.py)和银行相关业务接口(bank_interface.py) 转账功能:用户视图层(src.py)中的代码#6.转账功能@common.login_authdeftransfer():'''1.接收用户输入的转账目标用户2.接收用户输入的转账金额'''whileTrue:#......
  • Day26.还款功能
    1.还款功能_用户视图层(src.py)和银行相关业务接口(bank_interface.py)还款功能:src.py中的代码#5.还款功能@common.login_authdefrepay():'''银行卡还款,无论是信用卡或储蓄卡,是否能充任意大小的金额'''whileTrue:#1)让用户输入还款金额......
  • CSP历年复赛题-P5662 [CSP-J2019] 纪念品
    原题链接:https://www.luogu.com.cn/problem/P5662题意解读:n件物品,t天每天有不同的价格,类似股票,初始有m金币,每天都可以无限次买卖,问最后最多可以达到多少金币。解题思路:考试中一定要学会面向数据编程!1、对于 10%10% 的数据,......