class Solution { public: vector intersect(vector& nums1, vector& nums2) { std::sort(nums1.begin(), nums1.end()); std::sort(nums2.begin(), nums2.end()); std::vector result; result.reserve(std::max(nums1.size(), nums2.size())); size_t i = 0; size_t j = 0; while ((i < nums1.size()) && (j < nums2.size())) { if (nums1[i] == nums2[j]) { result.push_back(nums1[i]); ++i; ++j; } else if (nums1[i] < nums2[j]) { ++i; } else { ++j; } } return result; } };