Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算矩阵和时如何提高性能_Java_Algorithm_Matrix - Fatal编程技术网

Java 计算矩阵和时如何提高性能

Java 计算矩阵和时如何提高性能,java,algorithm,matrix,Java,Algorithm,Matrix,在一次面试中,我得到了一个任务,我得到了一个矩阵,现在我需要使用以下公式从中生成另一个矩阵: 给定矩阵A[R][C],生成B[R][C] val = 0; for (i = 0; i ≤ xPosition; i += 1) { for (j = 0; j ≤ yPosition; j += 1) { val = val + a(i, j); } } B(xPosition,yPosition) = val; 我想出了以下代码: public List<

在一次面试中,我得到了一个任务,我得到了一个矩阵,现在我需要使用以下公式从中生成另一个矩阵:

给定矩阵A[R][C],生成B[R][C]

val = 0;
for (i = 0; i ≤ xPosition; i += 1) {
    for (j = 0; j ≤ yPosition; j += 1) {
        val = val + a(i, j);
    }
}

B(xPosition,yPosition) = val;
我想出了以下代码:

public List<List<Integer>> generate(List<List<Integer>> A) {
        List<List<Integer>> top = new ArrayList<>();

        for (int i = 0; i < A.size(); i++) {
            List<Integer> inner = new ArrayList<>();
            for (int j = 0; j < A.get(0).size(); j++) {
                inner.add(generateValue(A, i, j));
            }
            top.add(inner);
        }
        return top;
    }

    int generateValue(List<List<Integer>> A, int xPosition, int yPosition) {
        int val = 0;
        for (int i = 0; i <= xPosition; i++) {
            for (int j = 0; j <= yPosition; j++) {
                int value = A.get(i).get(j);
                val += value;
            }
        }
        return val;
    }
输出:


如何提高此逻辑的性能?

数学上对于数组b中的解决方案,每个元素都与其前一个元素相关

要改进代码/优化代码,您需要看到这种关系。 因此,对于每一个B[i][j],都与它的前一个元素和数组A中的值相关

下面是数学上的解决方案

b[i][j] = b[i-1][j] + a[i][0]+a[i][1] + a[i][2]+...+a[i][y-1] 
因此,如果您能够实现这一点,您的代码将通过所有测试用例


我不是java开发人员,但如果您需要代码,我可以用python为您编写代码,用于数组b中的解决方案,每个元素都与其前一个元素相关

要改进代码/优化代码,您需要看到这种关系。 因此,对于每一个B[i][j],都与它的前一个元素和数组A中的值相关

下面是数学上的解决方案

b[i][j] = b[i-1][j] + a[i][0]+a[i][1] + a[i][2]+...+a[i][y-1] 
因此,如果您能够实现这一点,您的代码将通过所有测试用例


我不是java开发人员,但如果您想要代码,我可以用python为您编写它。关键是要将其视为一个动态编程问题,假设我们已经计算了所有0的B[x][y]。关键是要将其视为一个动态编程问题,假设我们已经计算了所有0的B[x][y]!我认为你的问题在这里是离题的,但在网站上是主题。你发代码了吗?考虑聘用你的公司会怎么想你寻求帮助?@MicheleDorigatti,几天前有人问过这个问题,我只是想知道我在解决这个简单逻辑时犯了什么错误。重新计算每个元素的值嗨!我认为你的问题在这里是离题的,但在网站上是主题。你发代码了吗?考虑聘用你的公司会怎么想你寻求帮助?@MicheleDorigatti,几天前有人问我,我只是想知道我在解决这个简单逻辑时犯了什么错误。重新计算每个元素的值
b[i][j] = b[i-1][j] + a[i][0]+a[i][1] + a[i][2]+...+a[i][y-1] 
B[i][j] = B[i-1][j] + B[i][j-1] - B[i-1][j-1] + A[i][j]
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 0 0 0 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
1 1 1 1 0
2 2 2 2 1
2 2 2 2 1
2 2 2 2 1
1 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1