1. Two Sum ¶ Time: $O(n)$ Space: $O(n)$ C++JavaPython 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> numToIndex; for (int i = 0; i < nums.size(); ++i) { if (const auto it = numToIndex.find(target - nums[i]); it != numToIndex.cend()) return {it->second, i}; numToIndex[nums[i]] = i; } throw; } }; 1 2 3 4 5 6 7 8 9 10 11 12 13class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> numToIndex = new HashMap<>(); for (int i = 0; i < nums.length; ++i) { if (numToIndex.containsKey(target - nums[i])) return new int[] {numToIndex.get(target - nums[i]), i}; numToIndex.put(nums[i], i); } throw new IllegalArgumentException(); } } 1 2 3 4 5 6 7 8class Solution: def twoSum(self, nums: list[int], target: int) -> list[int]: numToIndex = {} for i, num in enumerate(nums): if target - num in numToIndex: return numToIndex[target - num], i numToIndex[num] = i