Сложность: easy
Вам дан двоичный массив nums (индексированный 0). Мы определяем xi как число, двоичным представлением которого является подмассив nums[0..i] (от старшего бита к младшему). Например, если nums = [1,0,1], то x0 = 1, x1 = 2 и x2 = 5. Верните массив булевых чисел answer, где answer[i] истинно, если xi делится на 5.
Пример:
Input: nums = [0,1,1]
Output: [true,false,false]
👨💻 Алгоритм:
1⃣Инициализация и вычисление:
Создайте переменную x для хранения текущего числа в десятичной системе.
Создайте пустой массив answer для хранения результатов делимости на 5.
2⃣Итерация по массиву:
Пройдите по всем элементам массива nums. Для каждого элемента:
Обновите значение x, учитывая текущий бит.
Проверяйте, делится ли x на 5, и добавьте результат (true или false) в массив answer.
Чтобы избежать переполнения, используйте модуль 5 для переменной x.
3⃣Возврат результата:
Верните массив answer с результатами проверки делимости на 5.
😎 Решение:
public class Solution {
public bool[] PrefixesDivBy5(int[] nums) {
int x = 0;
bool[] answer = new bool[nums.Length];
for (int i = 0; i < nums.Length; i++) {
x = (x * 2 + nums[i]) % 5;
answer[i] = x == 0;
}
return answer;
}
}Ставь 👍 и забирай 📚 Базу знаний