Lets first see the Problem Statement.

**Problem Statement** - Given an array, We need to find all the possible sets of 2 elements whose sum is equal to the target sum.

Solution: Given an array, lets say [10,-2,5,3,1,7,4] and given a target = 8 , We need to find all the possible 2 elements whose sum is equal to the 8.

the possible output will be

[10,-2] ,[5,3],[1,7]

Pseudo code-

- Lets first sort the array.
- After sorting, take 2 pointers, one is leftmost & second is rightmost.
- we will start taking each element from left & right then check some of both the element.
- If the sum is less then the target sum, then move the left pointer by one.
- if the sum is greater than the target sum, then move the right pointer to left by one.
- else if it is equal to target then put the elements one result array and move both left & right pointer by one.

Now let see the Java implementations.

public class TwoSumProblem { public static void main(String[] args) { int[] arr = {10,-2,5,3,1,7,4}; twoSumArray(arr,8); } public static void twoSumArray(int[] arr, int i) { // sort the array using Arrays sort Arrays.sort(arr); int size = arr.length; int left = 0; int right =size-1; List<Integer> list = new ArrayList<Integer>(); while(left<right) { int diff = arr[left]+arr[right]; if(diff<i) { left++; }else if(diff>i) { right--; }else { list.add(arr[left]); list.add(arr[right]); left++; right--; } } for(Integer it : list) { System.out.println(it); } }

Hope this will help you in your datastructre problem solving.

Thanks for reading.

## 0 comments:

## Post a Comment