赞
踩
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 甲板上的战舰,我们先来看题面:
https://leetcode-cn.com/problems/battleships-in-a-board/
Given an m x n matrix board where each cell is a battleship 'X' or empty '.', return the number of the battleships on board.
Battleships can only be placed horizontally or vertically on board. In other words, they can only be made of the shape 1 x k (1 row, k columns) or k x 1 (k rows, 1 column), where k can be of any size. At least one horizontal or vertical cell separates between two battleships (i.e., there are no adjacent battleships).
给定一个二维的甲板, 请计算其中有多少艘战舰。战舰用 'X'表示,空位用 '.'表示。你需要遵守以下规则:
给你一个有效的甲板,仅由战舰或者空位组成。
战舰只能水平或者垂直放置。换句话说,战舰只能由 1xN (1 行, N 列)组成,或者 Nx1 (N 行, 1 列)组成,其中N可以是任意大小。
两艘战舰之间至少有一个水平或垂直的空位分隔 - 即没有相邻的战舰。
解题思路:
按顺序放时,从左到右 ,从上到下,所以只需要考虑,上,左有无空位即可
- class Solution:
- def countBattleships(self, board: List[List[str]]) -> int:
- count = 0
- for i in range(len(board)):
- for j in range(len(board[0])):
- if (board[i][j] == 'X') and (i == 0 or board[i-1][j] =='.') and (j == 0 or board[i][j-1] =='.'):
- count +=1
- return count
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。