fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
  5. // Sort both arrays
  6. sort(nums1.begin(), nums1.end());
  7. sort(nums2.begin(), nums2.end());
  8.  
  9. vector<int> ans;
  10. int i = 0, j = 0;
  11.  
  12. // Two pointer method
  13. while (i < nums1.size() && j < nums2.size()) {
  14. if (nums1[i] < nums2[j]) {
  15. i++;
  16. }
  17. else if (nums1[i] > nums2[j]) {
  18. j++;
  19. }
  20. else {
  21. // nums1[i] == nums2[j]
  22. if (ans.empty() || ans.back() != nums1[i]) {
  23. ans.push_back(nums1[i]); // add only once
  24. }
  25. i++;
  26. j++;
  27. }
  28. }
  29. return ans;
  30. }
  31.  
  32. int main() {
  33. vector<int> a = {1, 2, 2, 1};
  34. vector<int> b = {2, 2};
  35.  
  36. vector<int> res = intersection(a, b);
  37.  
  38. for (int x : res)
  39. cout << x << " ";
  40. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
2