题解 | #最小体重积# java
最小体重积
https://www.nowcoder.com/practice/0980f806727e48f3b0253243416038c0
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cows int整型二维数组
* @return long长整型
*/
public long minPathProduct(int[][] cows) {
// 获取矩阵的行数和列数
int m = cows.length;
int n = cows[0].length;
// 如果矩阵只有一个元素,直接返回该元素的值
if (m == 1 && n == 1) {
return cows[0][0];
}
// 创建一个二维数组f,用于记录到达每个位置的最小路径乘积
long[][] f = new long[m][n];
// 初始化第一行和第一列的路径乘积
f[0][0] = cows[0][0];
for (int i = 1; i < m; ++i) {
f[i][0] = f[i - 1][0] * cows[i][0];
}
for (int j = 1; j < n; ++j) {
f[0][j] = f[0][j - 1] * cows[0][j];
}
// 计算到达每个位置的最小路径乘积
for (int i = 1; i < m; ++i) {
for (int j = 1; j < n; ++j) {
f[i][j] = Math.min(f[i - 1][j], f[i][j - 1]) * cows[i][j];
}
}
// 返回到达右下角位置的最小路径乘积
return f[m - 1][n - 1];
}
}
该代码使用的编程语言是Java。
它考察了动态规划的知识点。
下面是代码的文字解释大纲:
- 定义了一个名为
Solution的类。 - 在类中,声明了一个公有的长整型方法
minPathProduct,该方法接受一个二维整型向量cows作为参数,并返回一个长整型值。 - 方法内部,先获取二维向量
cows的行数m和列数n。 - 如果
m和n都为1,则直接返回cows中唯一的元素。 - 创建一个二维向量
f,用于记录到达每个位置的最小路径乘积,初始化为全0。 - 对于第一行和第一列的元素,最小路径乘积等于前一个位置的最小路径乘积乘以当前位置的值。
- 使用动态规划的思想,计算其他位置的最小路径乘积。对于每个位置
f[i][j],它的最小路径乘积等于上方位置f[i-1][j]和左方位置f[i][j-1]中较小的乘积再乘以当前位置的值。 - 返回右下角位置
f[m-1][n-1]的最小路径乘积作为结果。