【发布时间】:2015-09-25 23:29:19
【问题描述】:
我正在用 Java 做一些测试来热身,我刚刚做了这个:
给出了一个由 N 个整数组成的非空零索引数组 A。 数组 A 的连续元素表示 a 上的连续汽车 路。
数组 A 仅包含 0 和/或 1:
0 代表汽车向东行驶,1 代表汽车向西行驶。 目标是计算过往车辆。我们说一对汽车(P,Q), 其中 0 ≤ P
例如,考虑数组 A,这样:
A[0] = 0 A[1] = 1 A[2] = 0 A[3] = 1 A[4] = 1 我们有五个 过往车辆:(0, 1), (0, 3), (0, 4), (2, 3), (2, 4)。
写一个函数:
类解决方案 { public int solution(int[] A); }
给定一个由 N 个整数组成的非空零索引数组 A,返回 过往车辆的对数。
如果经过的汽车对数,该函数应返回 -1 超过 1,000,000,000。
例如,给定:
A[0] = 0 A[1] = 1 A[2] = 0 A[3] = 1 A[4] = 1 函数 应该返回 5,如上所述。
假设:
N 是 [1..100,000] 范围内的整数;数组 A 的每个元素 是一个整数,可以具有以下值之一:0、1。 复杂性:
预期的最坏情况时间复杂度为 O(N);预期最坏情况空间 复杂度为 O(1),超出输入存储(不计算存储 需要输入参数)。输入数组的元素可以是 修改。
我的代码如下:
public int solution(int[] A) {
// write your code in Java SE 8
int result = 0;
long mult = 0;
for(int value : A){
if(value == 0){
mult ++;
}
else {
result += mult;
}
}
return result;
}
结果的链接是这个: https://codility.com/demo/results/trainingFFF4BS-AZ3/
如果链接死了,结果说:
性能测试
▶ medium_random random, length = ~10,000 ✔OK ▶ large_random random, 长度 = ~100,000 ✘错误答案得到 1248768710 预期 -1 ▶ large_big_answer 0..01..1,长度 = ~100,000 ✘错误答案得到 -1794967296 预期 -1 ▶ large_alternate 0101..01, length = ~100,000 ✘WRONG ANSWER got 1250025000 expected -1 ▶ large_extreme large test with all 1s/0s, length = ~100,000 ✔OK
你知道我的代码有什么问题吗?
【问题讨论】:
-
超过 1,000,000,000 后你不会停止。
标签: java performance