``` Input: nums = [2,7,11,15], target = 9 Output: [0,1] Explanation: Because nums[0] + nums[1] == 9, we return [0, 1]. ``` ```cpp= class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { } }; ``` ``` 10 / | \ 5 3 6 i j [2, 7, 11, 15, ], target = 18 output: [1, 2] [2, 2], target = 4 forloop i forloop j var sum = num[i] + num[j]; if (sum = ta) n + (n - 1) + (n -2) ... + 1 (n+1)*n/2 = n^2 forloop i map[target - num[i]] = i; forloop j if(!map[nums[j]].empty) { int pairIndex = map[nums[j]]; return [j, pairIndex]; } O(n) O(n) ```