You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何统计数组中两数之和等于给定值的组合总数

问题解答

疑问解答

  • 是否需要新建额外数组来存储任意两个元素的和?
    不需要。你只需要当场计算两个元素的和并判断是否符合要求即可,额外存储和会占用不必要的内存空间,数组规模较大时还会拉低执行效率。
  • 应该采用什么方法计算数组中任意两个元素的和?
    对于入门学习者,最容易理解的是双重for循环法:外层循环遍历第一个元素的位置,内层循环从外层元素的下一个位置开始遍历第二个元素,这样可以保证每对组合只被计算一次,不会出现(a,b)和(b,a)重复统计的问题。
  • 如何统计符合条件的组合数量?
    你可以定义一个初始值为0的计数器变量,每计算出一组两个元素的和等于givenNumber时,就把计数器的值加1,循环结束后计数器的值就是符合要求的总组合数。

现有代码问题说明

你目前编写的代码存在以下问题:

  1. 循环中同时使用index++和++index,会导致索引每次循环跳2位,无法遍历所有元素
  2. 只计算了相邻元素的和,没有覆盖所有两两组合的情况
  3. 没有设置计数器统计符合条件的组合,sum变量每次循环都会被覆盖,没有实际作用

修正后可运行代码

public class NumberOfCombinations {
    public static void main(String[] args) {
        // 定义数组和目标数值
        int[] valuesTable = {1, 2, 3, 4, 5};
        int givenNumber = 3;
        // 定义计数器,初始值为0
        int count = 0;
        int n = valuesTable.length;
        
        // 外层循环:取第一个元素,索引范围是0到n-2
        for (int i = 0; i < n - 1; i++) {
            // 内层循环:取第二个元素,从i的下一位开始,避免重复统计
            for (int j = i + 1; j < n; j++) {
                // 当场计算两个元素的和,判断是否符合要求
                if (valuesTable[i] + valuesTable[j] == givenNumber) {
                    count++;
                }
            }
        }
        
        // 输出结果,示例中符合条件的组合是(1,2),结果为1
        System.out.println("符合条件的组合总数量为:" + count);
    }
}

内容的提问来源于stack exchange,提问作者sylvtronix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:06:06