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

    解题思路:

    善于利用题目信息”This is an invalid board that you will not receive - as battleships will always have a cell separating between them.“,battleship不相邻,一个点如果是battleship中一点,当battleship的长度大于一时其横向或者纵向临近的点肯定是'X',当battleship的长度为一时其临近的点都是‘.’。因此,对于每个battleship,我们只统计其纵向或者横向的第一个点。

    代码:

     1 class Solution {
     2 public:
     3     int countBattleships(vector<vector<char>>& board) {
     4         int num = 0;
     5         int col = board[0].size();
     6         int row = board.size();
     7         for (int i = 0; i < row; ++i) {
     8             for (int j = 0; j < col; ++j) {
     9                 if (board[i][j] == 'X') {
    10                     if (i > 0 && board[i-1][j] == 'X')
    11                         continue;
    12                     if (j > 0 && board[i][j-1] == 'X')
    13                         continue;
    14                     num++;
    15                 }
    16             }
    17         }
    18         return num;
    19     }
    20 };
  • 相关阅读:
    虚函数表
    写出float x 与“零值”比较的if语句
    系统表的构成
    UEFI的inf文件构成
    最短路径算法
    EDK2与EDK2工具链关系图
    GIT提交本地文件
    docker学习笔记-04:docker容器数据卷
    docker学习笔记-03:docker的镜像原理
    docker学习笔记-02:docker常用命令
  • 原文地址:https://www.cnblogs.com/gsz-/p/9439691.html
Copyright © 2020-2023  润新知