История изменений
Исправление utf8nowhere, (текущая версия) :
А если с обычным set
? Найвный vs. с байтодрочерский
Runtime 121 ms/beats 17.43%; Memory 91.31 MB/beats 9.13%:
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
set<int> set(nums.begin(), nums.end());
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (auto prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Runtime 53 ms/beats 77.13%; Memory 79.08 MB/beats 76.50%:
#include <memory_resource>
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
// можно попробовать множитель от 2 до 4
// ну и `node_type` задействовать, но мне было влом
vector<byte> buf(2 * sizeof(void*) * nums.size());
pmr::monotonic_buffer_resource mbr{buf.data(), buf.size()};;
pmr::polymorphic_allocator<int> pa{&mbr};
pmr::set<int> set(nums.begin(), nums.end(), pa);
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (int prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Исправление utf8nowhere, :
А если с обычным set
? Найвный vs. с байтодрочерский
Runtime 121 ms/beats 17.43%; Memory 91.31 MB/beats 9.13%:
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
set<int> set(nums.begin(), nums.end());
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (auto prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Runtime 53 ms/beats 77.13%; Memory 79.08 MB/beats 76.50%:
#include <memory_resource>
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
// можно попробовать множитель от 2 до 4
vector<byte> buf(2 * sizeof(void*) * nums.size());
pmr::monotonic_buffer_resource mbr{buf.data(), buf.size()};;
pmr::polymorphic_allocator<int> pa{&mbr};
pmr::set<int> set(nums.begin(), nums.end(), pa);
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (int prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Исправление utf8nowhere, :
А если с обычным set
? Найвный vs. с байтодрочерский
Runtime 121 ms/beats 17.43%; Memory 91.31 MB/beats 9.13%:
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
set<int> set(nums.begin(), nums.end());
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (auto prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Runtime 53 ms/beats 77.13%; Memory 79.08 MB/beats 76.50%:
#include <memory_resource>
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
// можно попробовать множитель от 2 до 4
vector<byte> buf(2 * sizeof(void*) * nums.size());
pmr::monotonic_buffer_resource mbr{buf.data(), buf.size()};;
pmr::polymorphic_allocator<int> pa{&mbr};
pmr::set<int> set(nums.begin(), nums.end(), pa);
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (int prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Исправление utf8nowhere, :
А если с обычным set
? Найвный vs. с байтодрочерский
Runtime 121 ms/beats 17.43%; Memory 91.31 MB/beats 9.13%
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
set<int> set(nums.begin(), nums.end());
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (auto prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Runtime 53 ms/beats 77.13%; Memory 79.08 MB/beats 76.50%
#include <memory_resource>
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
// можно попробовать множитель от 2 до 4
vector<byte> buf(2 * sizeof(void*) * nums.size());
pmr::monotonic_buffer_resource mbr{buf.data(), buf.size()};;
pmr::polymorphic_allocator<int> pa{&mbr};
pmr::set<int> set(nums.begin(), nums.end(), pa);
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (int prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
Исходная версия utf8nowhere, :
А если с обычным set
? Найвный vs. с байтодрочерский
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
set<int> set(nums.begin(), nums.end());
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (auto prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};
#include <memory_resource>
class Solution {
public:
int longestConsecutive(const vector<int>& nums) {
if (nums.empty()) return 0;
// можно попробовать множитель от 2 до 4
vector<byte> buf(2 * sizeof(void*) * nums.size());
pmr::monotonic_buffer_resource mbr{buf.data(), buf.size()};;
pmr::polymorphic_allocator<int> pa{&mbr};
pmr::set<int> set(nums.begin(), nums.end(), pa);
int ret = 1;
int cnt = 1;
auto b = set.begin();
auto e = set.end();
for (int prev = *(b++); b != e; prev = *(b++)) {
if (*b - prev == 1) {
cnt++;
continue;
}
ret = max(ret, cnt);
cnt = 1;
}
return max(ret, cnt);
}
};