Largest Number

Solution For Largest Number

Problem Statement: Given a list of non-negative integers, arrange them such that they form the largest number.

Example:

Input: [3,30,34,5,9] Output: “9534330”

Solution:
To solve this problem, we need to create a custom sort function. Sort the numbers in the decreasing order based on the following comparison:

For any two numbers a and b, we compare the concatenation of a and b to the concatenation of b and a. If the former is greater than the latter, then a should come before b in the sorted array.

For example:

a=3, b=30

concatenation of a and b = “330”

concatenation of b and a = “303”

Since “330” is greater than “303”, a should come before b in the sorted array.

Using this custom sort, we can sort the list of numbers in descending order to form the largest number. Once we have sorted the numbers, we concatenate them to form the final result.

Code:

Here’s the Python code to solve this problem:

class Solution:
def largestNumber(self, nums: List[int]) -> str:
nums = [str(num) for num in nums] nums.sort(key=lambda x: x + x[0], reverse=True)
return str(int(”.join(nums)))

Step by Step Implementation For Largest Number

class Solution {
    public String largestNumber(int[] nums) {
        // sort the array in reverse order
        Arrays.sort(nums, (a, b) -> (b + "" + a).compareTo(a + "" + b));
        
        // if the first element is 0, return 0
        if (nums[0] == 0) return "0";
        
        // otherwise, combine all elements into a string
        StringBuilder sb = new StringBuilder();
        for (int num : nums) sb.append(num);
        return sb.toString();
    }
}
class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        # We need to sort the list in reverse order
        # and then join the elements to form a string
        return ''.join(sorted(map(str, nums), reverse=True))
var largestNumber = function(nums) {
    // sort the array in reverse order
    nums.sort((a, b) => {
        return b - a;
    });
    
    // edge case: if the array contains only 0's
    if (nums[0] === 0) {
        return '0';
    }
    
    // join the array and return it
    return nums.join('');
};
class Solution {
public:
    string largestNumber(vector& nums) {
        // sort the array in reverse order
        sort(nums.rbegin(), nums.rend());
        // if the first element is 0, the whole number must be 0
        if (nums[0] == 0) {
            return "0";
        }
        // otherwise, concatenate the numbers together
        string result = "";
        for (int i = 0; i < nums.size(); i++) {
            result += to_string(nums[i]);
        }
        return result;
    }
};
public class Solution {
    public string LargestNumber(int[] nums) {
        // Sort the array in reverse order
        Array.Sort(nums, (a, b) => b.ToString().CompareTo(a.ToString()));
        
        // If the first element is 0, the entire number will be 0
        if (nums[0] == 0)
        {
            return "0";
        }
        
        // Build up the final string
        StringBuilder sb = new StringBuilder();
        foreach (int num in nums)
        {
            sb.Append(num);
        }
        
        return sb.ToString();
    }
}


Scroll to Top
[gravityforms id="5" description="false" titla="false" ajax="true"]