【问题标题】:List<Long> to int lossy conversionList<Long> 到 int 有损转换
【发布时间】:2019-10-19 00:22:11
【问题描述】:

我正在尝试解决一个挑战,该函数必须返回一个长整数,并将 intList&lt;Long&gt; 作为参数,但我不断收到以下错误:

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];

   }

}

【问题讨论】:

  • 我应该更清楚一点,我会在哪里进行此更改?

标签: java arrays list lossy-compression


【解决方案1】:

这里有几个问题:

  1. i 应该是 int 而不是 long,因为它是在 for 循环中初始化的变量。如果是long,您会收到类型不匹配错误。

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

现在,由于iintcoinLong,您还需要将两者的差值转换为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];
}

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多