Problem Statement |
|
The digits 4 and 7 are lucky digits, and all other digits are unlucky.
A second level lucky number is a positive integer whose decimal representation contains either all 4's or all 7's.
John and Brus have a set of integers, and they would like to find the subset whose sum is a second level lucky number.
You are given int[] numbers, the set of integers that John and Brus have.
Return a int[] containing the subset whose sum is a second level lucky number.
The return value must be sorted in ascending order.
If there are multiple possible return values, return the one with the largest sum.
If there is a tie, return the one that comes earliest lexicographically.
A int[] a1 comes before a int[] a2 lexicographically if a1 contains a smaller number at the first index where they differ.
If there are no possible subsets, return an empty int[] instead.
|
|
Definition |
| Class: | TheLuckyNumbersLevelTwo | Method: | find | Parameters: | int[] | Returns: | int[] | Method signature: | int[] find(int[] numbers) | (be sure your method is public) |
|
|
|
|
Constraints |
- | numbers will contain between 1 and 34 elements, inclusive. |
- | Each element of numbers will be between 1 and 1,000,000,000, inclusive. |
- | All elements in numbers will be distinct. |
|
Examples |
0) | |
| | Returns: {1, 2, 4 } | Here it's possible to get two second level lucky numbers - 4 and 7.
There are two subsets with a sum of 7 - {3, 4} and {1, 2, 4}.
We will choose the last one because it is lexicographically smaller. |
|
|
1) | |
| | Returns: { } | There are no subsets whose sum is a second level lucky number. |
|
|
2) | |
| |
3) | |
| {41, 2, 28, 44, 7, 42, 21} |
| Returns: {7, 28, 42 } | |
|
4) | |
| {15, 10, 28, 3, 13, 27, 7} |
| Returns: {7, 15, 27, 28 } | |
|
5) | |
| |
6) | |
| {34, 20, 26, 28, 33, 23, 44, 40, 25, 10, 36, 14, 7, 29, 21, 27, 17, 13, 19, 24, 32, 41, 31} |
| Returns: {7, 10, 13, 14, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 31, 32, 34, 44 } | |
|