```
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> um; // map value to index
for(int i = 0; i < nums.size(); i ++) {
int cur_value = nums[i];
if(um.count(target - cur_value) > 0) return vector<int> {um[target-cur_value], i};
um[cur_value] = i;
}
return vector<int> (0);
}
};
```