TGViewer
Golang | LeetCode Golang | LeetCode @easy_golang_task · 3.57K subscribers
Post #1612 250
Задача: 999. Available Captures for Rook
Сложность: easy

Вам дана матрица 8 x 8, изображающая шахматную доску. На ней есть ровно одна белая ладья, представленная символом "R", некоторое количество белых слонов "B" и некоторое количество черных пешек "p". Пустые клетки обозначаются символом '.'. Ладья может перемещаться на любое количество клеток по горизонтали или вертикали (вверх, вниз, влево, вправо), пока не достигнет другой фигуры или края доски. Ладья атакует пешку, если она может переместиться на ее клетку за один ход. Примечание: Ладья не может перемещаться через другие фигуры, такие как слоны или пешки. Это означает, что ладья не может атаковать пешку, если путь ей преграждает другая фигура. Верните количество пешек, которые атакует белая ладья.

Пример:
Input: board = [[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]

Output: 3


👨‍💻 Алгоритм:

1⃣Поиск ладьи:
Найдите координаты белой ладьи "R" на шахматной доске.

2⃣Проверка направлений атаки:
Проверьте все четыре направления (влево, вправо, вверх, вниз) от позиции ладьи.
Перемещайтесь по каждому направлению до тех пор, пока не встретите другую фигуру или край доски.

3⃣Подсчет атакованных пешек:
Если встреченная фигура - черная пешка "p", увеличьте счетчик атакованных пешек.
Если встреченная фигура - белый слон "B" или край доски, остановитесь в этом направлении.

😎 Решение:
func numRookCaptures(board [][]byte) int {
countPawns := func(x, y, dx, dy int) int {
for x >= 0 && x < 8 && y >= 0 && y < 8 {
if board[x][y] == 'B' {
break
}
if board[x][y] == 'p' {
return 1
}
x += dx
y += dy
}
return 0
}

for i := 0; i < 8; i++ {
for j := 0; j < 8; j++ {
if board[i][j] == 'R' {
return countPawns(i, j, -1, 0) + countPawns(i, j, 1, 0) +
countPawns(i, j, 0, -1) + countPawns(i, j, 0, 1)
}
}
}
return 0
}


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_golang_task
  1. Oct 9, 2026Задача: 336. Palindrome Pairs Сложность: hard Вам дан массив уникальных строк words, индек…
  2. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для Golang разработчика, которые нигде больше не п…
  3. Oct 5, 2026Задача: 897. Increasing Order Search Tree Сложность: easy Задав корень дерева двоичного по…
  4. Oct 4, 2026Задача: 200. Number of Islands Сложность: medium Дана двумерная бинарная сетка размером m…
  5. Oct 4, 2026Задача: 313. Super Ugly Number Сложность: medium Супер некрасивое число — это положительно…
  6. Oct 3, 2026Задача: 1166. Design File System Сложность: medium Вам нужно разработать файловую систему,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →