Решение
fun isPerfectSquare(num: Int): Boolean {
var left = 1
var right = num
// Используем бинарный поиск, чтобы найти корень
while (left <= right) {
val mid = left + (right - left) / 2
val square = mid.toLong() * mid.toLong() // Преобразуем в long для избежания переполнения
when {
square == num.toLong() -> return true // Нашли точный квадрат
square < num -> left = mid + 1 // Ищем в правой половине
else -> right = mid - 1 // Ищем в левой половине
}
}
return false // Если не нашли точный квадрат
}