Сложность: easy
Дана матрица m x n из различных чисел, верните все счастливые числа в матрице в любом порядке.
Счастливое число — это элемент матрицы, который является минимальным элементом в своей строке и максимальным в своем столбце.
Пример:
Input: matrix = [[3,7,8],[9,11,13],[15,16,17]]
Output: [15]
Explanation: 15 is the only lucky number since it is the minimum in its row and the maximum in its column.
👨💻 Алгоритм:
1⃣Сохраните минимум каждой строки в список rowMin и максимум каждого столбца в список colMax.
2⃣Итерируйте по каждому числу в матрице и проверяйте, равно ли оно rowMin[i] и colMax[j].
3⃣Если число удовлетворяет условию, добавьте его в список luckyNumbers и верните luckyNumbers.
😎 Решение:
class Solution {
function luckyNumbers ($matrix) {
$N = count($matrix);
$M = count($matrix[0]);
$rowMin = [];
for ($i = 0; $i < $N; $i++) {
$rMin = min($matrix[$i]);
$rowMin[] = $rMin;
}
$colMax = [];
for ($i = 0; $i < $M; $i++) {
$cMax = PHP_INT_MIN;
for ($j = 0; $j < $N; $j++) {
$cMax = max($cMax, $matrix[$j][$i]);
}
$colMax[] = $cMax;
}
$luckyNumbers = [];
for ($i = 0; $i < $N; $i++) {
for ($j = 0; $j < $M; $j++) {
if ($matrix[$i][$j] == $rowMin[$i] && $matrix[$i][$j] == $colMax[$j]) {
$luckyNumbers[] = $matrix[$i][$j];
}
}
}
return $luckyNumbers;
}
}Ставь 👍 и забирай 📚 Базу знаний