java – 检查一个数据测试 – pair_sum_even_count

前端之家收集整理的这篇文章主要介绍了java – 检查一个数据测试 – pair_sum_even_count前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为招聘过程的一部分,我最近在网上进行了一次关于数据的测试.在1小时内我被给了两个简单的问题来解决.对于那些不了解数据的人来说,它是一个在线编码测试网站,您可以用许多不同的语言解决ACM风格问题.

如果你有30分钟以上,那么检查这个http://codility.com/demo/run/

我的选择武器通常是Java.

所以,我有一个问题如下(我会尽量记住,应该采取截图)

让我们说你有数组A [0] = 1 A [1] = – 1 …. A [n] = x

那么当A [i] A [j]甚至在哪里我会发现什么是最聪明的方法? Ĵ

所以如果我们有{1,2,3,4,5}
我们有1 3 1 5 2 4 3 5 = 4对是均匀的

我写的代码是一些事情

int sum=0;
for(int i=0;i<A.length-1;i++){
 for (int j=i+1;j<A.length;j++){
   if( ((A[i]+A[j])%2) == 0 && i<j) {
       sum++;
    }
  }
}

还有一个限制,如果对数大于1e9,那么它应该重新运行-1,但是让它忘记它.

你能建议一个更好的解决方案吗?正常情况下,元素数不超过1e9.

我认为上述代码扣除了27分(即不完美).可编程性给出了对错误的详细评估,我现在没有这样的权限.

解决方法

两个整数的总和即使且仅当它们既是偶数也可以是奇数时.你可以简单地通过阵列,并计数和平均值和赔率.从一组大小N组合k个数的可能性数量是N! /((N-k)!·k!).你只需要将数量/次数作为N和2作为k.为此,上述简化为(N·(N-1))/ 2.所有条件i< j是指定每个组合只计算一次.

猜你在找的Java相关文章