Java 计算矩阵和时如何提高性能
在一次面试中,我得到了一个任务,我得到了一个矩阵,现在我需要使用以下公式从中生成另一个矩阵: 给定矩阵A[R][C],生成B[R][C]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<
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