419.battleships-in-a-board.go 501 B

123456789101112131415161718192021222324252627282930
  1. func countBattleships(board [][]byte) (cnt int) {
  2. m := len(board)
  3. if m == 0 {
  4. return
  5. }
  6. n := len(board[0])
  7. if n == 0 {
  8. return
  9. }
  10. for i := 0; i < m; i++ {
  11. for j := 0; j < n; j++ {
  12. if board[i][j] == 'X' {
  13. fill(board, j, i, m, n)
  14. cnt++
  15. j++
  16. }
  17. }
  18. }
  19. return
  20. }
  21. func fill(board [][]byte, x, y, m, n int) {
  22. board[y][x] = '.'
  23. for i := x + 1; i < n && board[y][i] == 'X'; i++ {
  24. board[y][i] = '.'
  25. }
  26. for i := y + 1; i < m && board[i][x] == 'X'; i++ {
  27. board[i][x] = '.'
  28. }
  29. }