gpt4 book ai didi

java - 为什么我在 Matrix 中填写 Integer.MAX_VALUE

转载 作者:行者123 更新时间:2023-12-02 01:12:31 28 4
gpt4 key购买 nike

本题来自 LeetCode 174. Dungeon Game。

代码能够正确运行。

但是如果我删除 for (int[] level : dp) Arrays.fill(level, Integer.MAX_VALUE); ,代码将会失败。

如果删除for (int[] level : dp) Arrays.fill(level, Integer.MAX_VALUE);,为什么代码无法运行

class Solution {
public int calculateMinimumHP(int[][] dungeon) {
int rows = dungeon.length;
int cols = dungeon[0].length;
int[][] dp = new int[rows + 1][cols + 1];

for (int[] level : dp) Arrays.fill(level, Integer.MAX_VALUE);


dp[rows][cols - 1] = 1;
dp[rows - 1][cols] = 1;

for(int i = rows - 1; i >= 0; i--){
for(int j = cols - 1; j >= 0; j--){
int min = Math.min(dp[i][j + 1] , dp[i + 1][j]) - dungeon[i][j];
dp[i][j] = min <= 0 ? 1 : min;
}
}

return dp[0][0];
}
}

最佳答案

因为min(Integer.MAX_VALUE, everything_else) = everything_else

因此,在数组中查找最小值的代码应该从 min=MAX_VALUE 开始,假设数组中一定有一个值小于该值。

found_min=MAX_VALUE
for (int i=0 ; i<size ; ++i)
found_min = min(arr[i], found_min)

此代码失败的唯一方法是当数组为空时,然后返回的 found_min 将保持 MAX_VALUE

关于java - 为什么我在 Matrix 中填写 Integer.MAX_VALUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153345/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com