Power of Three
https://leetcode.com/problems/power-of-three | Easy |
Условие
Дано целое число n. Необходимо определить, является ли оно степенью тройки. Число n является степенью тройки, если существует целое число x такое, что n == 3^x.
Примеры
Input:
n = 27Output:
trueExplanation:
27 = 3^3
Input:
n = 0Output:
falseExplanation:
0 не может быть степенью тройки.
Input:
n = -1Output:
falseExplanation:
-1 не может быть степенью тройки.
Решение
fun isPowerOfThree(n: Int): Boolean {
// Число должно быть больше 0 и делиться на 3 до тех пор, пока не останется 1
if (n <= 0) return false
var num = n
while (num % 3 == 0) {
num /= 3
}
// Если после всех делений num равно 1, значит это степень тройки
return num == 1
}
Временная сложность
O(log₃(n)) — количество делений на 3 зависит от логарифма числа по основанию 3.
Пространственная сложность
O(1) — используется постоянное количество памяти.