java - vector 内的 vector

标签 java arrays vector multidimensional-array subset-sum

我有这段代码...它几乎完全符合我的需要。它在预定义的整数数组中搜索两个整数,总和为目标整数。但是,当将值放入 vector 时,不是将它们放入单元格内,而是将所有值放在一起。 即对于 int array[50,40,30,20,10] 和目标 50,它不是返回 [[50][40,10][30,20]...etc.],而是打印 [[50,40 ,10,30,20...等]] 我该如何解决这个问题?

public Vector<Vector<Integer>> subsetSum(int[] array, int target) {
    //creates vectors, adds inner vector to another vector
    outer = new Vector<Vector<Integer>>();
    inner = new Vector<Integer>();
    outer.add(inner);

    for (int k = 0; k < array.length; k++) {
        for (int l = 1; l < array.length; l++) {
            int sum = array[k]+array[l]; //sum of l and k
            if (sum == target) {
                //add l,k to vector
                inner.add(array[l]);
                inner.add(array[k]);
                //prints l and k if their sum equals target
                System.out.println(array[l]+"+"+array[k]+"="+target);
            }
            else {
                System.out.print("");
            }
        }
        //if k is the target, display
        if (array[k] == target) {
            //add k to vector
            inner.add(array[k]);
            //prints if int equals target
            System.out.println(array[k]+"="+target);
        }
    }
    //return combinations that add up to target in vector form
    return outer;
}

最佳答案

您只向outer添加一个 vector 。如果您找到一对加起来达到所需总和的值,您是否希望它们位于不同的 vector 中?因此,当发生这种情况时,您需要创建一个新的“内部” vector ,并将其添加到outer

删除这些行:

inner = new Vector<Integer>();
outer.add(inner);

更改:

if (sum == target) {
    inner = new Vector<Integer>();
    outer.add(inner)
    //add l,k to vector
    inner.add(array[l]);
    inner.add(array[k]);

还有:

if (array[k] == target) {
    inner = new Vector<Integer>();
    outer.add(inner)
    //add k to vector
    inner.add(array[k]);

最后,考虑将 innerouter 设为局部变量。

关于java - vector 内的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830992/

相关文章:

java - 格式化字符串到日期转换而不更改java中的格式

java - 如何在 Android MVVM 架构中实现对话框选择

java - 合并来自 hadoop map-reduce 的结果

c++ - vector 中允许的事件迭代器的数量

c++ - 读取文件时如何忽略无效输入?

java - "must implement the inherited abstract method java.awt.event.ActionListener.actionPerformed(java.awt.event.ActionEvent)"是什么意思?

使用atoi将char数组转换为整数导致段错误

javascript - Sprite 图像的不同起始方向

javascript - 如何使用 jquery 创建我的图像数组?

arrays - Rust 是否有办法将函数/方法应用于数组或向量中的每个元素?