Given an array of integers `nums` and an integer `target`, return indices of the two numbers such that they add up to `target`.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example 1:

`Input: nums = [2,7,11,15], target = 9Output: [0,1]Output: Because nums + nums == 9, we return [0, 1].`

Example 2:

`Input: nums = [3,2,4], target = 6Output: [1,2]`

Example 3:

`Input: nums = [3,3], target = 6Output: [0,1]`

Approach-1 :- Brute Force__ Time: O(n²) & Space: O(1)

`public int[] twoSum(int[] nums, int target) {    for (int i = 0; i < nums.length; i++) {        for (int j = i + 1; j < nums.length; j++) {            if (nums[j] == target - nums[i]) {                return new int[] { i, j };            }        }    }    throw new IllegalArgumentException("Not Possible");}`
• Time complexity : O(n²), For each element, we try to find its complement by looping through the rest of array which takes O(n) time. Therefore, the time complexity is O(n²).
• Space complexity : O(1).

Approach-2 :- Map__ Time: O(n) & Space: O(n)

`public int[] twoSum(int[] nums, int target) {    Map<Integer, Integer> map = new HashMap<>();    for (int i = 0; i < nums.length; i++) {        int complement = target - nums[i];        if (map.containsKey(complement)) {            return new int[] { map.get(complement), i };        }        map.put(nums[i], i);    }    throw new IllegalArgumentException("Not Found");}`
• Time complexity : O(n). We traverse the list containing n elements only once.
• map.containsKey(key) — takes O(1) time.
• Space complexity : O(n). The extra space required depends on the number of items stored in the hash table, which stores at most n elements.

Full Stack Software Developer| Programming enthusiast | Loves DS-Algo and System Design