Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <unordered_map>
- std::pair<int, int> twoSum(const std::vector<int>& nums, int target) {
- std::unordered_map<int, int> freq; // number → count
- for (int i = 0; i < nums.size(); ++i) {
- freq[nums[i]]++;
- }
- for (int i = 0; i < nums.size(); ++i) {
- int complement = target - nums[i];
- // Case 1: nums[i] != complement
- if (complement != nums[i] && freq[complement] > 0) {
- return {nums[i], complement};
- }
- // Case 2: nums[i] == complement, need at least 2 occurrences
- if (complement == nums[i] && freq[nums[i]] > 1) {
- return {nums[i], nums[i]};
- }
- }
- return {-1, -1}; // Not found
- }
- int main() {
- std::vector<int> nums = {12, 12, 13};
- int target = 24;
- auto result = twoSum(nums, target);
- if (result.first != -1) {
- std::cout << "Found: " << result.first << " + " << result.second << " = " << target << "\n";
- } else {
- std::cout << "No valid pair found.\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment