Я прокомментировал это еще один вопрос, который был задан кем-то другим.Это похоже относится к моему комментарию, поэтому я объясню, что я имел в виду.Я предложил следующее:
struct interval_node {
int index;
struct interval_node* next;
}
, где index хранит все точки, где бит "переворачивается".Это огромное преимущество в памяти, если у вас есть что-то вроде 11111111111100000000000
, потому что нужно только сохранить тот факт, что первый бит равен 1 (где-то вне структуры), а также что бит переходит в 12-й индекс (будучиНа основе 0), а не для хранения каждого отдельного бита.Это может масштабироваться до 100 000 бит, не занимая столько памяти, если последовательность не имеет тонны таких вещей, как
1010101010101010101010101010101010101010101010
, потому что она переворачивается на каждый бит.