Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads
Post #1271
111

Задача: 361. Bomb Enemy
Сложность: medium
Дана матрица размером m x n, где каждая ячейка является либо стеной 'W', либо врагом 'E', либо пустой '0'. Верните максимальное количество врагов, которых можно уничтожить, используя одну бомбу. Вы можете разместить бомбу только в пустой ячейке.
Бомба уничтожает всех врагов в той же строке и столбце от точки установки до тех пор, пока не встретит стену, так как она слишком сильна, чтобы быть разрушенной.
Пример:
👨💻 Алгоритм:
1⃣Перебрать каждую ячейку в сетке и для каждой пустой ячейки вычислить, сколько врагов можно убить, установив бомбу.
2⃣Реализовать функцию killEnemies(row, col), которая считает количество врагов, убитых бомбой, установленных в пустой ячейке (row, col), проверяя все четыре направления (влево, вправо, вверх, вниз) до стены или границы сетки.
3⃣Вернуть максимальное количество врагов, убитых среди всех пустых ячеек.
😎 Решение:
Ставь 👍 и забирай 📚 Базу знаний
Сложность: medium
Дана матрица размером m x n, где каждая ячейка является либо стеной 'W', либо врагом 'E', либо пустой '0'. Верните максимальное количество врагов, которых можно уничтожить, используя одну бомбу. Вы можете разместить бомбу только в пустой ячейке.
Бомба уничтожает всех врагов в той же строке и столбце от точки установки до тех пор, пока не встретит стену, так как она слишком сильна, чтобы быть разрушенной.
Пример:
Input: grid = [["0","E","0","0"],["E","0","W","E"],["0","E","0","0"]]
Output: 3
👨💻 Алгоритм:
1⃣Перебрать каждую ячейку в сетке и для каждой пустой ячейки вычислить, сколько врагов можно убить, установив бомбу.
2⃣Реализовать функцию killEnemies(row, col), которая считает количество врагов, убитых бомбой, установленных в пустой ячейке (row, col), проверяя все четыре направления (влево, вправо, вверх, вниз) до стены или границы сетки.
3⃣Вернуть максимальное количество врагов, убитых среди всех пустых ячеек.
😎 Решение:
class Solution {
function maxKilledEnemies($grid) {
if (count($grid) == 0) return 0;
$rows = count($grid);
$cols = count($grid[0]);
$maxCount = 0;
for ($row = 0; $row < $rows; ++$row) {
for ($col = 0; $col < $cols; ++$col) {
if ($grid[$row][$col] == '0') {
$hits = $this->killEnemies($row, $col, $grid);
$maxCount = max($maxCount, $hits);
}
}
}
return $maxCount;
}
private function killEnemies($row, $col, $grid) {
$enemyCount = 0;
$directions = [[-1, 0], [1, 0], [0, -1], [0, 1]];
foreach ($directions as $direction) {
$r = $row + $direction[0];
$c = $col + $direction[1];
while ($r >= 0 && $r < count($grid) && $c >= 0 && $c < count($grid[0])) {
if ($grid[$r][$c] == 'W') break;
if ($grid[$r][$c] == 'E') $enemyCount++;
$r += $direction[0];
$c += $direction[1];
}
}
return $enemyCount;
}
}Ставь 👍 и забирай 📚 Базу знаний




