查找数组中的元素,其总和等于10 - Java

时间:2015-11-13 01:10:58

标签: java arrays sorting

我想找到一个总和等于10的数组中的所有数字对,并且我想在这里改进这段代码:

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;
    }
}

但是,我在浏览阵列时遇到了麻烦。这就是我到目前为止所拥有的:

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

3 个答案:

答案 0 :(得分:0)

您需要捕获值和索引:

    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

输出:

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

答案 1 :(得分:0)

这是带有 javascrypt 的示例代码。有人可以使用它

 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);

    }
  }
 }

答案 2 :(得分:0)

通过传递求和和数组的值来尝试使用一个 for 循环来查找等于给定总和的元素对的值

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);
        }
    }
}