Problem Statement
For example, consider a game consisting of five turns. Suppose that the players to drink were, in order, Elly, Kriss, Stancho, Elly, and Stancho. (That is, Elly and Stancho both drank twice: Elly in turns 0 and 3, Stancho in turns 2 and 4.) In this game, Elly drank 0.75 gallons of liquid (0.5 gallons of orange juice and 0.25 of apple juice), Kriss drank 0.5 gallons of apple juice, and Stancho drank 0.375 gallons of orange juice (0.25 gallons in turn 2 and another 0.125 gallons in turn 4). In this game Elly would be the winner.
Elly knows all the people who played the game yesterday, and for each of them the number of times they drank. However, she remembers nothing about the order in which the players drank.
You are given a
Definition
- Class:
- EllysJuice
- Method:
- getWinners
- Parameters:
- String[]
- Returns:
- String[]
- Method signature:
- String[] getWinners(String[] players)
- (be sure your method is public)
Notes
- A sequence of distinct Strings is sorted if each element is lexicographically smaller than all the ones following it.
- String A is lexicographically smaller than String B if A contains smaller character at the first index where they differ. If there is no index where they differ, the shorter one is lexicographically smaller. For example "ariadne" is smaller than "elly", "abc" is smaller than "abd", "aaa" is smaller than "aaaaa", and "czzzzzzz" is smaller than "kaaaaaaa".
Constraints
- players will contain between 1 and 8 elements, inclusive.
- Each element of players will contain between 1 and 20 characters, inclusive.
- Each element of players will consist only of lowercase English letters ('a'-'z').
Examples
{ "elly", "kriss", "stancho", "elly", "stancho" }
Returns: {"elly", "stancho" }
Elly would win for the order given in the problem statement. If Stancho and Elly swapped all their turns, Stancho would win the game. Kriss cannot win.
{"torb", "elly", "stancho", "kriss"}
Returns: { }
In any valid game two of the four players would be tied for the lead (with half a gallon each).
{"elly", "elly", "elly", "elly", "elly"}
Returns: {"elly" }
Since she was the only player, apparently she won.
{ "ariadne", "elly", "ariadne", "stancho", "stancho", "kriss", "stancho", "elly" }
Returns: {"ariadne", "elly", "stancho" }
Although Stancho has drunk three times, there are orderings in which someone else wins.
{"elly"}
Returns: {"elly" }
A sole winner.
{"this", "test", "is", "really", "really", "evil"}
Returns: {"really" }
{"kriss", "elly", "kriss", "kriss", "elly", "kriss", "kriss", "kriss"}
Returns: {"elly", "kriss" }
{"aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaac", "aaaaaaaaaaaaaaaaaaad", "aaaaaaaaaaaaaaaaaaae", "aaaaaaaaaaaaaaaaaaaf", "aaaaaaaaaaaaaaaaaaag", "aaaaaaaaaaaaaaaaaaah"}
Returns: { }
{"aaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaab", "aaaaaaaaaaaaaaaaaaac", "aaaaaaaaaaaaaaaaaaad", "aaaaaaaaaaaaaaaaaaae", "aaaaaaaaaaaaaaaaaaaf", "aaaaaaaaaaaaaaaaaaag", "aaaaaaaaaaaaaaaaaaaa"}
Returns: {"aaaaaaaaaaaaaaaaaaaa" }
{"a", "aa", "aaa", "aaaa", "aaaa", "aaa", "aa", "a"}
Returns: {"a", "aa", "aaa", "aaaa" }
{"elly", "elly", "ariadne", "ariadne", "stancho", "stancho", "esprit", "esprit"}
Returns: {"ariadne", "elly", "esprit", "stancho" }
{"elly", "ariadne"}
Returns: { }
{"elly", "elly"}
Returns: {"elly" }
{"elly", "ariadne", "elly", "ariadne", "elly", "ariadne", "elly", "ariadne"}
Returns: {"ariadne", "elly" }
{"a", "b", "c", "a", "b", "c", "d", "nooooooooooooooooooo"}
Returns: {"a", "b", "c" }
{"ellie", "ellie", "ellie"}
Returns: {"ellie" }
{"torb", "torb", "torb", "torb", "elly", "torb"}
Returns: {"torb" }
{"ellie", "topcoder", "topcoder"}
Returns: {"topcoder" }
{"torb", "kriss", "esprit"}
Returns: { }
{"elly", "torb", "kriss", "ellie", "topcoder", "elly", "topcoder"}
Returns: {"elly", "topcoder" }
{"ellie", "topcoder", "kriss", "kriss", "ellie"}
Returns: {"ellie", "kriss" }
{"ellie", "ellie", "topcoder", "elly"}
Returns: {"ellie" }
{"topcoder", "torb", "elly"}
Returns: { }
{"esprit", "kriss", "ariadne", "ellie", "ellie", "ellie"}
Returns: {"ellie" }
{"torb", "esprit", "ariadne", "stancho", "topcoder", "stancho", "elly"}
Returns: {"stancho" }
{"stancho", "ariadne", "torb", "torb", "torb", "torb", "stancho", "ariadne"}
Returns: {"ariadne", "stancho", "torb" }
{"topcoder", "torb", "topcoder"}
Returns: {"topcoder" }
{"stancho", "torb", "stancho"}
Returns: {"stancho" }
{"elly", "kriss", "elly", "elly", "ariadne"}
Returns: {"elly" }
{"esprit", "stancho", "ellie"}
Returns: { }
{"ariadne", "ariadne", "esprit", "esprit"}
Returns: {"ariadne", "esprit" }
{"esprit", "esprit", "esprit", "ariadne", "esprit"}
Returns: {"esprit" }
{"elly", "elly", "torb", "esprit", "topcoder", "kriss", "topcoder", "ellie"}
Returns: {"elly", "topcoder" }
{"topcoder", "ellie", "topcoder"}
Returns: {"topcoder" }
{"elly", "torb", "elly", "esprit"}
Returns: {"elly" }
{"esprit", "topcoder", "topcoder", "esprit", "torb", "esprit", "kriss"}
Returns: {"esprit", "topcoder" }
{"ellie", "torb", "esprit", "esprit", "ellie", "torb"}
Returns: {"ellie", "esprit", "torb" }
{"elly", "ellie", "elly", "kriss", "ariadne", "elly", "ariadne", "ariadne"}
Returns: {"ariadne", "elly" }
{"esprit", "elly", "ellie", "ellie", "esprit", "ellie"}
Returns: {"ellie", "esprit" }
{"kriss", "esprit", "esprit", "kriss"}
Returns: {"esprit", "kriss" }
{"ariadne", "esprit", "stancho", "stancho", "ariadne", "stancho", "esprit", "elly"}
Returns: {"ariadne", "esprit", "stancho" }
{"topcoder", "topcoder", "elly", "topcoder", "stancho", "ariadne", "elly", "esprit"}
Returns: {"elly", "topcoder" }
{"elly", "esprit", "esprit"}
Returns: {"esprit" }
{"topcoder", "elly", "topcoder", "elly", "ariadne", "ariadne", "elly", "elly"}
Returns: {"ariadne", "elly", "topcoder" }
{"torb", "torb", "ariadne", "torb", "esprit", "esprit", "esprit", "ariadne"}
Returns: {"ariadne", "esprit", "torb" }
{"elly", "torb", "torb", "torb"}
Returns: {"torb" }
{"ellie", "stancho", "ariadne", "topcoder", "ariadne", "ellie"}
Returns: {"ariadne", "ellie" }
{"kriss", "esprit", "esprit"}
Returns: {"esprit" }
{"topcoder", "elly", "elly", "kriss", "esprit"}
Returns: {"elly" }
{"topcoder", "elly", "torb", "ellie", "ellie", "torb"}
Returns: {"ellie", "torb" }
{"esprit", "topcoder", "elly", "esprit", "ellie", "elly"}
Returns: {"elly", "esprit" }
{"elly", "topcoder", "ariadne", "elly"}
Returns: {"elly" }
{"stancho", "elly", "elly", "stancho", "elly"}
Returns: {"elly", "stancho" }
{"stancho", "ellie", "ellie"}
Returns: {"ellie" }
{"topcoder", "ariadne", "ariadne", "topcoder"}
Returns: {"ariadne", "topcoder" }
{"topcoder", "topcoder", "topcoder", "elly", "topcoder"}
Returns: {"topcoder" }
{"elly", "elly", "kriss", "elly", "stancho", "torb", "stancho"}
Returns: {"elly", "stancho" }
{"torb", "esprit", "kriss", "esprit", "elly", "torb", "esprit", "ellie"}
Returns: {"esprit", "torb" }
{"kriss", "ellie", "esprit", "ariadne", "ariadne"}
Returns: {"ariadne" }
{"ellie", "ellie", "ellie", "stancho"}
Returns: {"ellie" }
{"a" }
Returns: {"a" }
{"ariadne", "elly", "ariadne", "stancho", "stancho", "kriss", "stancho", "elly" }
Returns: {"ariadne", "elly", "stancho" }
{"e", "c", "d", "d", "d", "a", "e", "a" }
Returns: {"a", "d", "e" }
{"y" }
Returns: {"y" }
{"assd" }
Returns: {"assd" }
{"qwe" }
Returns: {"qwe" }
{"x" }
Returns: {"x" }
{"b", "b", "b", "b", "a", "a", "a", "a" }
Returns: {"a", "b" }
{"abc" }
Returns: {"abc" }
{"ivan" }
Returns: {"ivan" }
{"aa" }
Returns: {"aa" }
{"elly" }
Returns: {"elly" }
{"b", "b", "a", "a" }
Returns: {"a", "b" }
{"f" }
Returns: {"f" }
{"bb", "aa" }
Returns: { }
{"dz", "az", "az", "dz", "dz" }
Returns: {"az", "dz" }
{"aaa" }
Returns: {"aaa" }
{"b", "b", "c", "a", "a" }
Returns: {"a", "b" }
{"sara" }
Returns: {"sara" }
{"name" }
Returns: {"name" }
{"e" }
Returns: {"e" }
{"ariadne", "elly", "ariadne", "stancho", "stancho", "kriss", "stancho", "stancho" }
Returns: {"ariadne", "stancho" }
{"bb", "bb", "bb", "aa", "aa", "aa" }
Returns: {"aa", "bb" }
{"seraph" }
Returns: {"seraph" }
{"test" }
Returns: {"test" }
{"ff", "ee", "dd", "cc", "aa", "aa", "aa", "aa" }
Returns: {"aa" }
{"z", "z", "a", "a" }
Returns: {"a", "z" }
{"a", "a", "b", "b", "c", "c", "d", "d" }
Returns: {"a", "b", "c", "d" }
{"somename" }
Returns: {"somename" }
{"all", "all", "bee" }
Returns: {"all" }
{"aaaaaa" }
Returns: {"aaaaaa" }
{"zzzzzzzzzzzzzzzzzzzz", "zzzzzzzzzzzzzzzzzzzz", "zzzzzzzzzzzzzzzzzzzz", "a" }
Returns: {"zzzzzzzzzzzzzzzzzzzz" }
{"a", "b" }
Returns: { }
{"ann" }
Returns: {"ann" }
{"quang" }
Returns: {"quang" }
{"c", "b", "a", "a" }
Returns: {"a" }
{"a", "a", "c", "a", "b", "a", "b", "c" }
Returns: {"a", "b", "c" }
{"a", "a", "b" }
Returns: {"a" }
{"afda" }
Returns: {"afda" }
{"g", "f", "e", "d", "c", "b", "a", "a" }
Returns: {"a" }
{"a", "a", "b", "b" }
Returns: {"a", "b" }
{"a", "a", "b", "b", "b", "b", "b", "b" }
Returns: {"a", "b" }
{"c", "c", "a", "a", "a", "b", "b" }
Returns: {"a", "b", "c" }
{"kriss" }
Returns: {"kriss" }
{"aa", "bb" }
Returns: { }
{"z" }
Returns: {"z" }
{"b", "b", "b", "a", "a", "a" }
Returns: {"a", "b" }
{"a", "a", "a", "b", "b" }
Returns: {"a", "b" }
{"c", "c", "b", "b" }
Returns: {"b", "c" }
{"a", "a", "b", "c", "d" }
Returns: {"a" }
{"stancho", "stancho", "kriss", "elly", "elly" }
Returns: {"elly", "stancho" }
{"e", "a", "v" }
Returns: { }
{"z", "y", "x", "a", "a" }
Returns: {"a" }
{"b" }
Returns: {"b" }
{"a", "b", "a", "b" }
Returns: {"a", "b" }
{"a", "a", "a", "a", "b", "b" }
Returns: {"a", "b" }
{"abc", "abc", "cde", "cde", "cde", "cde", "cde" }
Returns: {"abc", "cde" }
{"ariadne" }
Returns: {"ariadne" }
{"e", "a" }
Returns: { }
{"aaaaa", "aaaa", "aaa", "aa", "aa", "aaaaaa", "aaaa", "aaaa" }
Returns: {"aa", "aaaa" }
{"z", "z", "y", "x", "x", "x" }
Returns: {"x", "z" }
{"b", "b", "b", "a", "a" }
Returns: {"a", "b" }
{"a", "d", "b", "c", "b", "c", "d", "a" }
Returns: {"a", "b", "c", "d" }
{"z", "z", "y", "y", "a", "a" }
Returns: {"a", "y", "z" }
{"b", "b", "b", "b", "b", "a", "a" }
Returns: {"a", "b" }
{"banana" }
Returns: {"banana" }
{"one", "one", "three", "four", "five", "six", "seven", "eight" }
Returns: {"one" }