題目描述:
用一次遍歷,找出來有多少個不相連的X
第一遍,本身寫的java
def countBattleships(self, board: List[List[str]]) -> int: res = 0 for i in range(len(board)): for j in range(len(board[0])): if board[i][j] == 'X': res += 1 board[i][j] = 'Y' for m in range(i + 1,len(board)): if board[m][j] == 'X': board[m][j] = 'Y' else: break for n in range(j + 1,len(board[0])): if board[i][n] == 'X': board[i][n] = 'Y' else: break elif board[i][j] == 'Y': board[i][j] == 'X' return res
看完答案,果真本身又弟弟了
只要遍歷的時候,計數:計最左上角的就能夠code
關鍵在於:最左上角的條件怎麼去寫?
觀察能夠得出:最左上角的元素或者是 上方是 ‘.’ 或者是左方是'.' (由於不是最左上角的元素,上方或者左方一定是x)ip
同時,若是最左上角的元素, index == 0 也要考慮進來。
代碼以下:class
def countBattleships(self, board: List[List[str]]) -> int: res = 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] == '.'): res += 1 return res