This post is completed by 1 user
|
Add to List |
485. Construct the Largest number from the given digits
Given a set of digits, write an algorithm to construct the largest number possible by appending the given digits.
Example:
Given Digits: [9, 1, 9, 2, 8, 4, 2] largest number: 9984221 Given Digits: [1, 2, 5, 6, 7] largest number: 76521
Approach: Sorting
- Sort the given array in descending order.
- Initialize result = 0.
- Iterate the digits from left to right and for each digit d-
- result = result * 10 + d.
- Return result.
Time Complexity: O(nlogn)
Output:
Given Digits: [9, 1, 9, 2, 8, 4, 2] largest number: 9984221
Better Solution: Use a count array.
Create a count[] array of size 10. In this array, we will store the count for each digit. Count of digit 0 will be at index 0, count of digit 1 will be at index 1 and so on. Iterate the given array and fill the count[] array with each digits count. Initialize result = 0.
Then Iterate the count[] from index 9 to 0 and for count for each index, result = result * 10 + index.
Time Complexity: O(N)
Output:
Given Digits: [8, 1, 2, 5, 6, 7] largest number: 876521