我正在尝试解决一个挑战,该函数必须返回一个长整数,并接受int和List<Long>作为参数,但我一直收到以下错误:
Solution.java:32: error: incompatible types: possible lossy conversion from long to int
if (i >= coin) dp[i] += dp[i - coin];我试过不同的选角,但都回到了这个位置。我的代码如下:
public static long count(int n, List<Long> c) {
long[] dp = new long[n + 1];
dp[0] = 1;
for (long coin : c) {
for (long i = 1; i <= n; i++){
if (i >= coin) dp[i] += dp[i - coin];
}
}
return dp[n];
}
}发布于 2019-10-19 08:41:27
这里有几个问题:
i应该是int而不是long,因为它是在for循环中初始化的变量。如果它是一个long,你会得到一个类型不匹配的错误。c存储Long的实例,所以coin也应该是一个Long现在,由于i是一个int,而coin是一个Long,因此您还需要将两者的区别转换为int。
public static long count(int n, List<Long> c) {
long[] dp = new long[n + 1];
dp[0] = 1;
for (Long coin : c) {
for (int i = 1; i <= n; i++) {
if (i >= coin) dp[i] += dp[(int) (i - coin)];
}
}
return dp[n];
}https://stackoverflow.com/questions/58459513
复制相似问题