On se retrouve aujourd'hui pour la solution du précédent #KataOfTheWeek proposé par Quentin en début de semaine !

Alors, vous avez trouvé ?

Une première solution :

import java.util.Arrays;
 public class Kata {
    public static double findUniq(double[] arr) {
      Arrays.sort(arr);
      return arr[0] == arr[1] ? arr[arr.length-1]:arr[0];
    }
}

Solution plutôt simple, le tableau contenant que 2 nombres différents (en plusieurs exemplaires) en le triant on s'assure que le nombre unique est soit au début soit à la fin du tableau.

Après si vous êtes en train de réviser l'OCP et que vous voulez utiliser les streams, vous pouvez collecter le tableau après l'avoir converti en Double, une fois converti on peut collecter le stream dans une Map avec un goupingBy :

import java.util.*;
import java.util.stream.Collectors;
import java.util.function.Function;

 public class Kata {
    public static double findUniq(double arr[]) {
      return Arrays.stream(arr)
                .boxed()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                .entrySet().stream()
                .filter(e-> e.getValue() == 1)
                .map(Map.Entry::getKey)
                .findFirst()
                .get();
    }
}

Mais cette solution est moins optimisée.

A bientôt pour un nouveau #KataOfTheWeek !