'Find elements in array whose sum is equal to 10 - Java

I want to find all the pairs of numbers from an array whose sum is equal to 10, and am trying to improve upon this bit of code here:

for (int j = 0; j < arrayOfIntegers.length - 1; j++)
{
    for (int k = j + 1; k < arrayOfIntegers.length; k++)
    {
        int sum = arrayOfIntegers[j] + arrayOfIntegers[k];
        if (sum == 10)
            return j + "," + k;
    }
}

However, I'm having trouble moving through the array. Here's what I have so far:

int[] arrayOfIntegers = {0, 5, 4, 6, 3, 7, 2, 10};

Arrays.sort(arrayOfIntegers);
System.out.println(Arrays.toString(arrayOfIntegers));
int left = arrayOfIntegers[0]; 
int right = (arrayOfIntegers[arrayOfIntegers.length - 1]);

while (left < right) 
{ 
    int sum = left + right;

    if (sum == 10) //check to see if equal to 10
    {
        System.out.println(left + "," + right);
    }
    if (sum > 10) // if sum is more than 10, move to lesser number
    {
        right --;
    }
    if (sum < 10) // if sum is less than 10, move to greater number
    {
        left++;
    }
} // end of while


Solution 1:[1]

Try this code by passing the value of the sum and array in which you want to find the pair of elements equals to a given sum using one for loop

private void pairofArrayElementsEqualstoGivenSum(int sum,Integer[] arr){
    List numList = Arrays.asList(arr);
    for (int i = 0; i < arr.length; i++) {
        int num = sum - arr[i];
        if (numList.contains(num)) {
            System.out.println("" + arr[i] + " " + num + " = "+sum);
        }
    }
}

Solution 2:[2]

You need to capture the values as well as the indexes:

    int[] arrayOfIntegers = {0, 5, 4, 6, 3, 7, 2, 10};

    Arrays.sort(arrayOfIntegers);
    System.out.println(Arrays.toString(arrayOfIntegers));

    int left = 0;
    int right = arrayOfIntegers.length - 1;

    while (left < right) 
    { 
        int leftVal = arrayOfIntegers[left]; 
        int rightVal = (arrayOfIntegers[right]);
        int sum = leftVal + rightVal;

        if (sum == 10) //check to see if equal to 10
        {
            System.out.println(arrayOfIntegers[left] + "," + arrayOfIntegers[right]);
            right --;
            left++;
        }
        if (sum > 10) // if sum is more than 10, move to lesser number
        {
            right --;
        }
        if (sum < 10) // if sum is less than 10, move to greater number
        {
            left++;
        }
    } // end of while

output:

[0, 2, 3, 4, 5, 6, 7, 10]
0,10
3,7
4,6

Solution 3:[3]

This is sample code with javascrypt. Someone can use it

 var arr = [0, 5, 4, 6, 3, 7, 2, 10]
 var arr1 = arr;

 for(var a=0; a<arr.length;a++){
  for(var b=0; b<arr.length; b++){

    if(arr[a]+arr[b]===10 && a!==b){
   
      console.log(arr[a]+" + "+arr[b])
      arr.splice(a,1);

    }
  }
 }

Solution 4:[4]

Java - Using single loop

public static void findElements() {

    List<Integer> list = List.of(0, 5, 4, 6, 3, 7, 2, 10);

    for (int i = 0; i < list.size(); i++) {

        int sum = 0;
        if (i < list.size() - 1) {

            sum = list.get(i) + list.get(i + 1);
            if (sum == 10) {
                System.out.println("Element: " + list.get(i) + "," + list.get(i + 1));
            }

        } else {
            if (list.get(i) == 10) {
                System.out.println("Element: " + list.get(i));
            }
        }

    }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 viveksuggu
Solution 2
Solution 3 lakru-one
Solution 4 Gajanan choundhe