<p>Given an array of integers <code>nums</code>, sort the array in ascending order and return it.</p>

<p>You must solve the problem <strong>without using any built-in</strong> functions in <code>O(nlog(n))</code> time complexity and with the smallest space complexity possible.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [5,2,3,1]
<strong>Output:</strong> [1,2,3,5]
<strong>Explanation:</strong> After sorting the array, the positions of some numbers are not changed (for example, 2 and 3), while the positions of other numbers are changed (for example, 1 and 5).
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [5,1,1,2,0,0]
<strong>Output:</strong> [0,0,1,1,2,5]
<strong>Explanation:</strong> Note that the values of nums are not necessairly unique.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 5 * 10<sup>4</sup></code></li>
	<li><code>-5 * 10<sup>4</sup> &lt;= nums[i] &lt;= 5 * 10<sup>4</sup></code></li>
</ul>

struct Solution {
    constexpr vector<int> sortArray(vector<int>& nums) const { return nums; }
    constexpr void func(string_view nums) const {
        constexpr int MIN = -50000;
        constexpr int MAX = 50000;
        constexpr int BUCKET = MAX - MIN + 1;
        vector<int> data(BUCKET, 0);
        string tmp;
        for (const char c : nums) {
            switch (c) {
            case '[':
                continue;
            case ']':
            case ',':
                ++data[stoi(tmp) - MIN];
                tmp.clear();
                continue;
            default:
                tmp.push_back(c);
            }
        }
        cout << '[';
        bool first = false;
        for (int i = 0; i < BUCKET; ++i) {
            for (int j = 0; j < data[i]; ++j) {
                if (first)
                    cout << ',';
                else
                    first = true;
                cout << (i + MIN);
            }
        }
        cout << ']';
    }
};

int init = [] {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ofstream out("user.out");
    cout.rdbuf(out.rdbuf());

    Solution s;
    for (string line; getline(cin, line); cout << endl)
        s.func(line);

    exit(0);
    return 0;
}();
18481