thewitchking

Untitled

Jul 17th, 2025
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4.  
  5. std::pair<int, int> twoSum(const std::vector<int>& nums, int target) {
  6.     std::unordered_map<int, int> freq; // number → count
  7.  
  8.     for (int i = 0; i < nums.size(); ++i) {
  9.         freq[nums[i]]++;
  10.     }
  11.  
  12.     for (int i = 0; i < nums.size(); ++i) {
  13.         int complement = target - nums[i];
  14.  
  15.         // Case 1: nums[i] != complement
  16.         if (complement != nums[i] && freq[complement] > 0) {
  17.             return {nums[i], complement};
  18.         }
  19.  
  20.         // Case 2: nums[i] == complement, need at least 2 occurrences
  21.         if (complement == nums[i] && freq[nums[i]] > 1) {
  22.             return {nums[i], nums[i]};
  23.         }
  24.     }
  25.  
  26.     return {-1, -1}; // Not found
  27. }
  28.  
  29. int main() {
  30.     std::vector<int> nums = {12, 12, 13};
  31.     int target = 24;
  32.  
  33.     auto result = twoSum(nums, target);
  34.  
  35.     if (result.first != -1) {
  36.         std::cout << "Found: " << result.first << " + " << result.second << " = " << target << "\n";
  37.     } else {
  38.         std::cout << "No valid pair found.\n";
  39.     }
  40.  
  41.     return 0;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment