Created
June 8, 2020 22:30
-
-
Save toderesa97/d7a6ea8d979b9c0bf5a171418b3fd935 to your computer and use it in GitHub Desktop.
Coding Problem 4: Facebook problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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