C
C/C++ | LeetCode
@easy_c_plus_task3.3K подп.
267просмотров
8.1%от подписчиков
19 марта 2026 г.
statsScore: 294
Задача: 1238. Circular Permutation in Binary Representation Сложность: medium Даны 2 целых числа n и start. Ваша задача - вернуть любую перестановку p из (0,1,2.....,2^n -1) такую, что : p[0] = start p[i] и p[i+1] отличаются только одним битом в их двоичном представлении. p[0] и p[2^n -1] также должны отличаться только одним битом в их двоичном представлении. Пример: Input: n = 2, start = 3 Output: [3,2,0,1] 👨‍💻 Алгоритм: 1⃣Генерация Грей-кода: Генерация Грей-кода для чисел от 0 до 2𝑛−1 2⃣Определение начальной позиции: Находим индекс числа start в последовательности Грей-кода. 3⃣Построение перестановки: Формируем перестановку, начиная с числа start и следуя по циклическому Грей-коду. 😎 Решение: vector<int> grayCode(int n) { vector<int> result; int num_elements = 1 << n; for (int i = 0; i < num_elements; ++i) { result.push_back(i ^ (i >> 1)); } return result; } vector<int> circularPermutation(int n, int start) { vector<int> gray = grayCode(n); auto start_iter = find(gray.begin(), gray.end(), start); vector<int> result; result.insert(result.end(), start_iter, gray.end()); result.insert(result.end(), gray.begin(), start_iter); return result; } Ставь 👍 и забирай 📚 Базу знаний
267
просмотров
1251
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_c_plus_task

Все посты канала →
Задача: 1238. Circular Permutation in Binary Representation — @easy_c_plus_task | PostSniper