Skip to content

Instantly share code, notes, and snippets.

@AmnesiacSloth
Last active September 13, 2024 03:12
Show Gist options
  • Save AmnesiacSloth/556112c74cc44c8c951e0b549da5a015 to your computer and use it in GitHub Desktop.
Save AmnesiacSloth/556112c74cc44c8c951e0b549da5a015 to your computer and use it in GitHub Desktop.
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector <int> sol;
unordered_map<int,int> complements;
// fill hashmap with nums elements as the key and indicies as the value {element, idx}
for (int i = 0; i < nums.size(); i++) {
complements.insert_or_assign(nums[i],i);
}
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (complements.count(complement) && complements[complement] != i) {
// if the complement exists in the map, add indicies to sol vector and return it
sol.push_back(i);
sol.push_back(complements[complement]);
return sol;
}
}
return sol;
}
};

Two Sum 📗

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]

Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
Only one valid answer exists.
We use insert_or_assign because in the event we have a double solution (i,e [3,3] target 6) 
The hashmap will store/assign the latest encountered element's index in the event an element was already 
hashed with an index earlier in the loop , which would be the duplicate "furthest" into the array,
In our computation step, since we linear scan the nums array, for a problem where the solution is duplicate elements, 
generally, we would encounter the first duplicate in the scan, and we would retrieve the 2nd duplicate from the hash map saving some compute cycles because the necessary duplicate would be "farther" in the array. 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment