Сложность: hard
Если задан целочисленный массив nums, переместите все четные числа в начало массива, а затем все нечетные. Верните любой массив, удовлетворяющий этому условию.
Пример:
Input: left = "4", right = "1000"
Output: 4
👨💻 Алгоритм:
1⃣Найти все палиндромы до корня из right.
2⃣Проверить, являются ли квадраты этих палиндромов палиндромами и лежат ли в диапазоне [left, right].
3⃣Подсчитать количество таких суперпалиндромов.
😎 Решение:
function isPalindrome($x) {
$s = strval($x);
return $s == strrev($s);
}
function superpalindromesInRange($left, $right) {
$leftNum = intval($left);
$rightNum = intval($right);
$count = 0;
for ($i = 1; $i < 100000; $i++) {
$s = strval($i);
$palin1 = intval($s . strrev($s));
$palin2 = intval($s . strrev(substr($s, 0, -1)));
if ($palin1 * $palin1 > $rightNum) {
break;
}
if ($palin1 * $palin1 >= $leftNum && isPalindrome($palin1 * $palin1)) {
$count++;
}
if ($palin2 * $palin2 >= $leftNum && $palin2 * $palin2 <= $rightNum && isPalindrome($palin2 * $palin2)) {
$count++;
}
}
return $count;
}Ставь 👍 и забирай 📚 Базу знаний