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解决方案的主要内容,如果未能解决你的问题,请参考以下文章
Codility 任务 TapEquilibrium 正确性仅为 33%
Solution to Triangle by Codility