1. Two Sum
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.
You can return the answer in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9 Output: [0,1] Output: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6 Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6 Output: [0,1]
Constraints:
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
- Only one valid answer exists.
Approach :
1. we will be doing using Brute force approach in which we have to start from beginning of the array and for each element of array we have to travers to check whether the sum of the first element and the second (traverse you can say jth value ) is equal to target or not, if not then traverse next else return the ith and jth value.
Problem of the this approach is time complexity o(n2).
so how we will optimize this ?
we can use HashMap and use its containsKey method ,
Approach :
class Solution {
public int[] twoSum(int[] nums, int target) {
//create a map to store value to index
// take a for loop and check the map contains that target- nums[i] then return the // //indexe //for both
//
Map<Integer ,Integer> map =new HashMap<>();
for(int i=0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
return new int[] {i,map.get(target-nums[i])};
}
else{
map.put(nums[i],i);
}
}
return new int[0];
}
}
Timecomplexity : o(n);
Comments
Post a Comment