0

我正在尝试解决一个挑战,该函数必须返回一个长整数并采用intandList<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];

   }

}
4

1 回答 1

1

这里有几个问题:

  1. i应该是 aint而不是 along因为它是在for循环中初始化的变量。如果它是long,你会得到一个类型不匹配的错误。

  2. 由于c存储 , 的实例Longcoin应该是Long

现在,由于iis anintcoinis a Long,您还需要将两者的差异转换为 an 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];
}
于 2019-10-19T00:41:26.880 回答