Java 在2n和x2B中;数组中有1个元素,有n个重复元素和一个非重复元素。查找非重复项

Java 在2n和x2B中;数组中有1个元素,有n个重复元素和一个非重复元素。查找非重复项,java,algorithm,Java,Algorithm,我正在努力解决一项任务。链接 基本问题如下。数组中有2n+1元素,其中n是重复的,而1其他元素没有重复。我希望高效地查找非重复元素。 我当前的实现涉及对数组进行初始排序,并比较并排元素以找到不重复的元素。它没有通过1个测试用例 这是我目前的代码: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message");

我正在努力解决一项任务。链接

基本问题如下。数组中有
2n+1
元素,其中
n
是重复的,而
1
其他元素没有重复。我希望高效地查找非重复元素。

我当前的实现涉及对数组进行初始排序,并比较并排元素以找到不重复的元素。它没有通过1个测试用例

这是我目前的代码:

import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
public int solution(int[] A) {
    // write your code in Java SE 8
    Arrays.sort(A);
    int index = 0;
    if(A.length==1){
    return A[0];
    }

        if(A[0]!=A[1]){
        return A[0];
        }


    for(int i = 1;i<A.length;i++){
        if(i==A.length-1){

            index = i;
            break;
        }

        if(A[i-1]!=A[i]&&A[i]!=A[i+1]){
            index = i;
            break;
        }

    }
    return A[index];
}
}
import java.util.*;
//您可以出于调试目的写入stdout,例如。
//System.out.println(“这是一条调试消息”);
类解决方案{
公共int解决方案(int[]A){
//用JavaSE8编写代码
数组。排序(A);
int指数=0;
如果(A.length==1){
返回[0];
}
如果(A[0]!=A[1]){
返回[0];
}

对于(int i=1;i我修改了您的逻辑,并给出了一些解释:

import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
public int solution(int[] A) {
    // write your code in Java SE 8
   Arrays.sort(A);
   int index = 0;
   if(A.length==1){
    return A[0];
   }
   index = A.length - 1; // if all adjacent elements are same, 
                      //then the last number has odd occurrences
   for(int i = 1;i<A.length;){
       if(A[i] != A[i-1]){
           index = i-1;
           break; // we can break as there is only one such element with odd occurrences
       }
       i = i + 2; // when adjacent alements are same, jump by 2 places
   }
   return A[index];
   }
}
import java.util.*;
//您可以出于调试目的写入stdout,例如。
//System.out.println(“这是一条调试消息”);
类解决方案{
公共int解决方案(int[]A){
//用JavaSE8编写代码
数组。排序(A);
int指数=0;
如果(A.length==1){
返回[0];
}
index=A.length-1;//如果所有相邻元素都相同,
//最后一个数字出现奇数

对于(int i=1;iYou应该提供单元测试,Saugat…而且你的标题非常通用。如果我知道单元测试是什么,我可以诊断问题。在Codibility中,它们不会显示单元测试是什么,因为用户可能会强制执行代码。很抱歉,我不能提供单元测试,因为我自己不知道它们。我们能做的最好的事情是阅读问题并提供解决问题的逻辑。无论如何,谢谢:).你能想出一个失败的单元测试吗?在这种情况下,哪个是程序规范?@MarcelJacquesmackhado你能给我一个标题吗?我是StackOverflow的新手,我还不习惯这里的礼节。