Codility - CountDiv JavaScript解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codility - CountDiv JavaScript解决方案相关的知识,希望对你有一定的参考价值。

我对javascript还是有点陌生,所以如果有人愿意解释如何解决这个小问题。

基本上,我是用不同的语言来解决codility训练任务。我在使用java脚本时遇到了一个小问题,浮点数。下面是我说的例子。有关任务是在 第三课, 任务一: CountDiv

在Java中,我的解决方案完美地工作,它的得分是100100。这里是代码。

class Solution {
    public int solution(int A, int B, int K) {

        int offset = A % K ==0?1:0;

        return (B/K) - (A/K) + offset;

    }
}

用java写的脚本代码得了75100分。

function solution(A, B, K) {
   var offset;

   if (A % K === 0) {
       offset=1;
   } else {
       offset=0;
   }

   var result =(B/K) - (A/K) + offset;

   return parseInt(result);
}

JavaScript解决方案在以下测试中失败:A=11,B=345,K=17(返回19,预期20)

我猜测其与JavaScript如何将浮点转换为整数有关?

如果有人能解释一下如何正确编写JS解决方案?

谅谅

答案

使用 parseInt 在除法结果上。

当你使用除法运算符时,结果会被强制为浮点数,要使其成为整数,则使用 parseInt 上。(感谢 @ahmacleod)

function solution(A, B, K) {
    var offset = A % K === 0 ? 1 : 0;
    return parseInt(B / K) - parseInt(A / K) + offset;
}
另一答案

我第一次尝试是这样做的。

function solution(A, B, K) {
    return Math.floor(B / K) - Math.floor(A / K) + (A % K === 0 ? 1 : 0);
}

结果得了100100分,就像前面提到的parseInt也能做到。

另一答案

迅捷100%

public func solution(_ A : Int, _ B : Int, _ K : Int) -> Int {


    // write your code in Swift 4.2.1 (Linux)

     let offset = A % K == 0 ? 1 : 0

    return (B/K) - (A/K) + offset
}

以上是关于Codility - CountDiv JavaScript解决方案的主要内容,如果未能解决你的问题,请参考以下文章

python CountDiv

关于 Codility 的 HilbertMaze 任务

Codility 任务 TapEquilibrium 正确性仅为 33%

Solution to Triangle by Codility

CountNonDivisible - Codility 训练任务

Solution of NumberOfDiscIntersections by Codility