gpt4 book ai didi

java - Codility FrogJmp奇怪的Java分数

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:55 24 4
gpt4 key购买 nike

所以我决定试试 Codility .第一个任务 - FrogJmp太简单了,但令我惊讶的是我得到了 44%。解决方案,即使是正确的,在性能方面显然也是 Not Acceptable 。

原始解决方案:

public int solution2(int X, int Y, int D) {
return (int) Math.ceil((float)(Y -X)/D);
}

所以我决定尝试使用不同的代码,不使用浮点运算。

public int solution(int X, int Y, int D) {
int diff = Y - X;
if (diff % D == 0)
return diff /D;
else
return diff/D + 1;

}

这次我得到了 100%。所以我想自己检查性能并编写简单的测试:

class Solution {


public int solution(int X, int Y, int D) {
int diff = Y - X;
if (diff % D == 0)
return diff /D;
else
return diff/D + 1;

}

public int solution2(int X, int Y, int D) {
return (int) Math.ceil((float)(Y -X)/D);
}


private static Random ran = new Random(System.currentTimeMillis());

public static int getRandom(int a, int b){
return ran.nextInt(b - a + 1) + a;
}


public static void main(String[] args) {

int size = 1000_000;
int max = 1000_000_000;

int[] xs = new int[size];
int[] ys = new int[size];
int[] ds = new int[size];

for (int i = 0; i < size; i++) {
int y = getRandom(1, max);
int x = getRandom(1, y);
int d = getRandom(1, max);
xs[i] = x;
ys[i] = y;
ds[i] = d;
}

long start = System.nanoTime();

Solution sol = new Solution();
for (int i = 0; i < size; i++) {
sol.solution2(xs[i], ys[i], ds[i]);
}

long diff = System.nanoTime() - start;

System.out.println("took: " + diff/1000000 + "ms");
}
}

令我惊讶的是,在我的机器上,解决方案 1 平均耗时 13 毫秒,而解决方案 2(报告为绝对无效的那个)平均耗时 10 毫秒。

我错过了什么?

也许它必须按照任务的预期时间和空间复杂度来做一些事情。

expected worst-case time complexity is O(1); expected worst-case space complexity is O(1).

解决方案 2 不是具有恒定的时间和空间复杂度吗?

此外,我无法理解 44% 解决方案的结果报告:

enter image description here

这是什么意思??

最佳答案

C# 中的 100/100 解决方案我只是

using System;    
class Solution {
public int solution(int X, int Y, int D) {
return ((Y - X) + D - 1)/D;
}
}

关于java - Codility FrogJmp奇怪的Java分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25455903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com