Сложность: medium
Дано целое число n. Верните true, если оно является степенью числа четыре. В противном случае верните false.
Целое число n является степенью числа четыре, если существует целое число x такое, что n == 4^x.
Пример:
Input: n = 2
Output: 1
Explanation: 2 = 1 + 1, 1 × 1 = 1.
👨💻 Алгоритм:
1⃣Инициализация и базовый случай:
Создайте массив dp длиной n + 1, где dp[i] будет хранить максимальное произведение для числа i. Инициализируйте массив нулями.
2⃣Вычисление максимального произведения:
Для каждого числа i от 2 до n:
Для каждого числа j от 1 до i // 2:
Обновите dp[i] как максимальное значение между текущим dp[i], произведением j и i - j, и произведением j и dp[i - j].
3⃣Возврат результата:
Верните значение dp[n], которое будет максимальным произведением для числа n.
😎 Решение:
class Solution {
function integerBreak($n) {
if ($n <= 1) return 0;
$dp = array_fill(0, $n + 1, 0);
for ($i = 2; $i <= $n; $i++) {
for ($j = 1; $j <= floor($i / 2); $j++) {
$dp[$i] = max($dp[$i], max($j * ($i - $j), $j * $dp[$i - $j]));
}
}
return $dp[$n];
}
}Ставь 👍 и забирай 📚 Базу знаний