平板上的战船。题意是给一个二维数组,包括了点和X。判断有几个战舰。战舰的定义是必须是横的或者直的并且任意两个战舰之间至少有一个cell的间隔。思路是遍历一次input,找出战舰的起始点。所谓的战舰起始点,就是为X的点,而且该点的上方和左边的点不能为X。这题其实是比较简单,因为如果战舰可以相邻,会更难判断。
时间O(n^2)
空间O(1)
1 /** 2 * @param {character[][]} board 3 * @return {number} 4 */ 5 var countBattleships = function(board) { 6 let m = board.length; 7 if (m === 0) return 0; 8 let n = board[0].length; 9 let res = 0; 10 for (let i = 0; i < m; i++) { 11 for (let j = 0; j < n; j++) { 12 if (board[i][j] === '.') continue; 13 if (i > 0 && board[i - 1][j] === 'X') continue; 14 if (j > 0 && board[i][j - 1] === 'X') continue; 15 res++; 16 } 17 } 18 return res; 19 };