Two Sum
The Two-Sum Problem
Conceptually this is a linear search and a linear time algorithm.
// 7 ms (Beats 90%)
// 11.15 MB (Beats 32%)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> diff_idx;
for (int i = 0; i < nums.size(); ++i) {
const auto diff = target - nums[i];
if (diff_idx.find(diff) != diff_idx.end()) {
return {i, diff_idx[diff]};
}
diff_idx[nums[i]] = i;
}
return {};
}
};# 54 ms (Beats 96%)
# 17.43 MB (Beats 54%)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
diff_idx = {}
for idx, num in enumerate(nums):
diff = target - num
if diff in diff_idx:
return [idx, diff_idx[diff]]
diff_idx[num] = idx