Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <chrono>
- #include <execution>
- #include <iostream>
- #include <numeric>
- #include <random>
- #include <vector>
- using namespace std;
- class Solution {
- public:
- bool containsDuplicate(vector<int>& nums) {
- sort(execution::par, nums.begin(), nums.end());
- return adjacent_find(execution::par, nums.begin(), nums.end()) != nums.end();
- }
- };
- int main() {
- uniform_int_distribution<> uid(-1'000'000'000, 1'000'000'000);
- mt19937 gen{ random_device()() };
- auto rnd = [&](int& x) { x = uid(gen); };
- vector<int> box(100'000);
- constexpr size_t limit = 1000;
- vector<double> results(limit);
- for (size_t i = 0; i < limit; ++i) {
- for_each(box.begin(), box.end(), rnd);
- const auto start = chrono::high_resolution_clock::now();
- Solution solution;
- solution.containsDuplicate(box);
- const auto end = chrono::high_resolution_clock::now();
- const auto time = chrono::duration_cast<chrono::microseconds>(end - start).count() / 1000.0;
- results[i] = time;
- }
- sort(results.begin(), results.end());
- const auto average = accumulate(results.begin(), results.end(), 0.0) / limit;
- cout.setf(ios::fixed);
- cout.precision(2U);
- cout << "Time minimum: " << results.front() << " ms\n";
- cout << "Time maximum: " << results.back() << " ms\n";
- cout << "Time average: " << average << " ms\n";
- system("pause > nul");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement