gpt4 book ai didi

java - 查找奇偶校验异常值 CodeWars

转载 作者:行者123 更新时间:2023-11-30 01:51:23 24 4
gpt4 key购买 nike

所以我决定去 codewars 温习一下 java,我有这个问题需要解决:

给你一个包含整数的数组(长度至少为 3,但可能非常大)。该数组要么完全由奇数整数组成,要么完全由除单个整数 N 之外的偶数整数组成。编写一个方法,将数组作为参数并返回此“异常值”N。

这是我的测试用例:

public class OutlierTest{
@Test
public void testExample() {
int[] exampleTest1 = {2,6,8,-10,3};
int[] exampleTest2 = {206847684,1056521,7,17,1901,21104421,7,1,35521,1,7781};
int[] exampleTest3 = {Integer.MAX_VALUE, 0, 1};
assertEquals(3, FindOutlier.find(exampleTest1));
assertEquals(206847684, FindOutlier.find(exampleTest2));
assertEquals(0, FindOutlier.find(exampleTest3));
}}

这是我用来解决问题的代码:

            public class FindOutlier{
static int find(int[] integers){

int numerOfOdds = 0;
int numberOfEvens = 0;
int integerOutlier;


for(int i = 0; i < integers.length ;i++){
if ( integers[i]%2 == 0){
numberOfEvens++;
}else{
numerOfOdds++;
}
}

if ( numberOfEvens > numerOfOdds){
integerOutlier = 1;
}else{
integerOutlier = 0;
}

for(int i = 0; i < integers.length; i++){
if ((integers[i]%2) == integerOutlier){
return integers[i];
}
}

return 0;
}}

本质上,代码的作用是循环遍历数组以查找外围奇偶校验。然后再次循环以确定离群整数。该代码通过了所有测试用例。然而,当我尝试提交代码时,它告诉我它期望 -3 但得到 0。

谁能帮我找出我的逻辑错误吗?这有点令人沮丧,因为它没有告诉我它测试的数组是什么,所以我无法跟踪我的代码来查找错误。

请原谅我的拼写错误,如果他们的代码不是最有效的,我可能会使用 ArrayLists,但看起来 CodeWars 不允许使用 ArrayLists...

最佳答案

好吧,你的数学有一个错误:-3 % 2 == -1,所以当负奇数是异常值时,它会失败。将第二个循环更改为

for(int i = 0; i < integers.length; i++){
if (Math.abs(integers[i]%2) == integerOutlier){
return integers[i];
}
}

关于java - 查找奇偶校验异常值 CodeWars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910154/

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