Skip to content

Instantly share code, notes, and snippets.

@toderesa97
Created June 8, 2020 22:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toderesa97/d7a6ea8d979b9c0bf5a171418b3fd935 to your computer and use it in GitHub Desktop.
Save toderesa97/d7a6ea8d979b9c0bf5a171418b3fd935 to your computer and use it in GitHub Desktop.
Coding Problem 4: Facebook problem
import java.util.Comparator;
import java.util.List;
public class Problem {
public static int productOfNumbers(List<Integer> numbers) {
Number result = numbers.stream()
.map(n -> new Number(Math.abs(n), n < 0))
.sorted(Comparator.reverseOrder())
.limit(3)
.reduce((n1, n2) -> new Number(n1.number * n2.number, isNegative(n1, n2)))
.get();
return result.isNegative ? -1*result.number : result.number;
}
private static boolean isNegative(Number n1, Number n2) {
if (n1.isNegative && n2.isNegative) {
return false;
} else return n1.isNegative || n2.isNegative;
}
private static class Number implements Comparable<Number> {
int number;
boolean isNegative;
Number(int number, boolean negative) {
this.number = number;
this.isNegative = negative;
}
@Override
public int compareTo(Number o) {
return number - o.number;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment