https://leetcode.com/problems/valid-perfect-square/description/ Easy

Решение

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  // Если не нашли точный квадрат
}