Problem Statement
leetcode problem link
Solution [Accepted]
public class Solution {
public int[] TwoSum(int[] nums, int target) {
Dictionary<int, int> seen = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++) {
int complement = target - nums[i];
if (seen.ContainsKey(complement)) {
return [i , seen[complement]];
}
seen[nums[i]] = i;
}
return [];
}
}
Editorial
Approach 3: One-pass Hash Table
public class Solution {
public int[] TwoSum(int[] nums, int target) {
Dictionary<int, int> map = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++) {
int complement = target - nums[i];
if (map.ContainsKey(complement)) {
return new int[] { map[complement], i };
}
map[nums[i]] = i;
}
// Return an empty array if no solution is found
return new int[] {};
}
}
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for i in range(len(nums)):
complement = target - nums[i]
if complement in hashmap:
return [i, hashmap[complement]]
hashmap[nums[i]] = i
# Return an empty list if no solution is found
return []