Given a list of integers, combine them to form the biggest number possible using all given numbers. Example:
500,60 return 60500
1,2,3 return 321
We can cheat a bit and get the input as array of strings, but the approach is the same. The idea is we need to sort this input in a way that provides us with the highest numbers first.
However, it is not enough to simply compare numbers since the example shows that approach would lead to the wrong result: 500,60 the biggest number is 60500 and not 50060 even though 500 is bigger than 60.
This example does show the solution though: given two numbers we want to order them based on the resulting number, since 60500 is bigger than 50060, the order is then 60,500
To solve our problem in O(N logN) time and O(logN) space (use Arrays.sort()) we simply need to provide a comparator that does what we want, then take each number and combine it in the result.
You can check my implementation of makeBiggestNumber on my Gist along with some tests in MakeBiggestNumberJTests.
No comments:
Post a Comment
With great power comes great responsibility