> For the complete documentation index, see [llms.txt](https://soumyajit4419.gitbook.io/ds-algo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://soumyajit4419.gitbook.io/ds-algo/arrays/15.largest-number.md).

# 14.Largest Number

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

```
Example 1:
Input: nums = [10,2]
Output: "210"

Example 2:
Input: nums = [3,30,34,5,9]
Output: "9534330"

Example 3:
Input: nums = [1]
Output: "1"

Example 4:
Input: nums = [10]
Output: "10"
```

## Solution I:&#x20;

**Approach:** \
**Sorting with a compare.**

```cpp
class Solution
{
public:
    string largestNumber(vector<int> &nums)
    {

        for (int i = 0; i < nums.size(); i++)
        {
            for (int j = i + 1; j < nums.size(); j++)
            {
                string a = to_string(nums[i]) + to_string(nums[j]);
                string b = to_string(nums[j]) + to_string(nums[i]);

                if (b > a)
                {
                    swap(nums[i], nums[j]);
                }
            }
        }

        if (nums[0] == 0)
        {
            return "0";
        }
        
        string res = "";
        for (int i = 0; i < nums.size(); i++)
        {
            res = res + to_string(nums[i]);
        }

        return res;
    }
};
```

**Time Complexity: O(N^2)**

## Solution II:&#x20;

```cpp
class Solution
{
public:
    bool static compare(string a, string b)
    {
        string s1 = a + b;
        string s2 = b + a;
        if (s1 > s2)
        {
            return 1;
        }

        return 0;
    }

    string largestNumber(vector<int> &nums)
    {

        vector<string> v;
        for (int i = 0; i < nums.size(); i++)
        {
            string a = to_string(nums[i]);
            v.push_back(a);
        }

        sort(v.begin(), v.end(), compare);

        if (v[0] == "0")
        {
            return "0";
        }

        string res = "";
        for (int i = 0; i < v.size(); i++)
        {
            cout << v[i] << " ";
            res = res + v[i];
        }

        return res;
    }
};
```

**Time Complexity: O(N log n), Space Complexity: O(N)**
