Advertisement
NickAndNick

217. Contains Duplicate

Aug 26th, 2023 (edited)
1,251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | Software | 0 0
  1. #include <algorithm>
  2. #include <chrono>
  3. #include <execution>
  4. #include <iostream>
  5. #include <numeric>
  6. #include <random>
  7. #include <vector>
  8. using namespace std;
  9. class Solution {
  10. public:
  11.     bool containsDuplicate(vector<int>& nums) {
  12.         sort(execution::par, nums.begin(), nums.end());
  13.         return adjacent_find(execution::par, nums.begin(), nums.end()) != nums.end();
  14.     }
  15. };
  16. int main() {
  17.     uniform_int_distribution<> uid(-1'000'000'000, 1'000'000'000);
  18.     mt19937 gen{ random_device()() };
  19.     auto rnd = [&](int& x) { x = uid(gen); };
  20.     vector<int> box(100'000);
  21.    constexpr size_t limit = 1000;
  22.    vector<double> results(limit);
  23.    for (size_t i = 0; i < limit; ++i) {
  24.        for_each(box.begin(), box.end(), rnd);
  25.        const auto start = chrono::high_resolution_clock::now();
  26.        Solution solution;
  27.        solution.containsDuplicate(box);
  28.        const auto end = chrono::high_resolution_clock::now();
  29.        const auto time = chrono::duration_cast<chrono::microseconds>(end - start).count() / 1000.0;
  30.        results[i] = time;
  31.    }
  32.    sort(results.begin(), results.end());
  33.    const auto average = accumulate(results.begin(), results.end(), 0.0) / limit;
  34.    cout.setf(ios::fixed);
  35.    cout.precision(2U);
  36.    cout << "Time minimum: " << results.front() << " ms\n";
  37.    cout << "Time maximum: " << results.back() << " ms\n";
  38.    cout << "Time average: " << average << " ms\n";
  39.    system("pause > nul");
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement