https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/description/ | Easy |
---|
Дано целое число num
. За один шаг:
• если число чётное — делим его на 2,
• если нечётное — вычитаем 1. Верни количество шагов, чтобы превратить num
в 0.
Input:
num = 14Output:
6Explanation:
14 → 7 → 6 → 3 → 2 → 1 → 0
Input:
num = 8Output:
4Explanation:
8 → 4 → 2 → 1 → 0
Input:
num = 123Output:
12
fun numberOfSteps(num: Int): Int {
var n = num
var steps = 0
// Повторяем, пока n не станет 0
while (n > 0) {
if (n % 2 == 0) {
n /= 2 // Чётное — делим на 2
} else {
n -= 1 // Нечётное — вычитаем 1
}
steps++
}
return steps
}
O(log n)
, так как деление на 2 уменьшают число экспоненциально.
O(1)
, используется фиксированное количество переменных.