Сложность: medium
Даны два целых числа left и right, которые представляют диапазон [left, right], верните побитовое И всех чисел в этом диапазоне включительно.
Пример:
Input: left = 5, right = 7
Output: 4
👨💻 Алгоритм:
1⃣Сдвигать left и right вправо, пока они не станут равными.
2⃣Подсчитать количество сдвигов.
3⃣Сдвинуть left влево на количество сдвигов и вернуть результат.
😎 Решение:
class Solution {
func rangeBitwiseAnd(_ left: Int, _ right: Int) -> Int {
var left = left
var right = right
var shift = 0
while left < right {
left >>= 1
right >>= 1
shift += 1
}
return left << shift
}
}Ставь 👍 и забирай 📚 Базу знаний
