brick = (OBJECT*)realloc(brick, sizeof(*brick) * brickLength);
brick = new Object[brickLength];
delete[]
.std::vector<Object>
. (long long int*) calloc(len_s1, sizeof(int));
вы выделяете массив int на len_s1 элементов, а потом работаете с ним, как с массивом long long той же длины. Но long long занимает больше байт! Поэтому вы выделяете меньше памяти, чем используете, а это UB. O(n^2)
. Вы для каждого числа в массиве считатете, сколько раз оно туда входит проходя по массиву через nums.count(i)
. Оптимальное же решение работает O(n)
. Надо в хеш-таблице подсчитать, сколько раз каждое число встречается, потом через алгоритм QuickSelect выбрать k-ый c конца элемент.O(n log n)
отсортировать массив и потом за один проход подсчитать сколько раз каждое число встречается. Дальше можно второй раз отсортировать по количеству вхождений и выдать k-ый элемент. Это решение тоже пройдет. To better utilize memory, the list should include an array T=8 of structures representing a block
for (int i = 0; i < 8; ++i) result |= byte_array[i+1] << (8ULL*i);
или for (int i = 0; i < 8; ++i) result |= byte_array[i+1] << (8ULL*(7-i));
&result
. rewrite
из шаблона search
.rewrite
вверх, до специализации search
, то все скомпилируется. Или надо где-то выше первого использования шаблона rewrite задекларировать специализацию (что ваш закомментированный код и делает).Specialization must be declared before the first use that would cause implicit instantiation, in every translation unit where such use occurs:
a
для какой-то новой локальной переменной, когда a
выйдет из зоны видимости. Но чаще это место просто будет пустым до конца функции и никакой экономии памяти вы не получите.