<p>Given an integer array <code>nums</code>, return <em>the maximum difference between two successive elements in its sorted form</em>. If the array contains less than two elements, return <code>0</code>.</p>

<p>You must write an algorithm that runs in linear time and uses linear extra space.</p>

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

<pre>
<strong>Input:</strong> nums = [3,6,9,1]
<strong>Output:</strong> 3
<strong>Explanation:</strong> The sorted form of the array is [1,3,6,9], either (3,6) or (6,9) has the maximum difference 3.
</pre>

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

<pre>
<strong>Input:</strong> nums = [10]
<strong>Output:</strong> 0
<strong>Explanation:</strong> The array contains less than 2 elements, therefore return 0.
</pre>

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

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

class Solution:
    def maximumGap(self, nums: List[int]) -> int:

        def countingSort(arr, exp1):
            n = len(arr)
            output = [0] * (n)
            count = [0] * (10)
            for i in range(0, n):
                index = arr[i] // exp1
                count[index % 10] += 1

            for i in range(1, 10):
                count[i] += count[i - 1]
            i = n - 1
            while i >= 0:
                index = arr[i] // exp1
                output[count[index % 10] - 1] = arr[i]
                count[index % 10] -= 1
                i -= 1

            for i in range(0, len(arr)):
                arr[i] = output[i]


        def radixSort(arr):
            max1 = max(arr)
            exp = 1
            while max1 / exp >= 1:
                countingSort(arr, exp)
                exp *= 10
        
        radixSort(nums)
        count = 0
        temp = [nums.pop()]
        max_diff = float("-inf")
        while nums:
            num = nums.pop()
            temp.append(num)
            max_diff = max(max_diff, temp[0] - temp[1])
            temp = [num]
        return max_diff if max_diff != float("-inf") else 0

27941